2017-02-23 3 views
2

私はPythonライブラリが必要なときにpipを使ってPyPiからフェッチします。プロジェクトを作成して共有したいのであれば、setup.pyファイルを用意するだけで簡単にインストールできます。したがって、私は卵や車輪パッケージのユースケースが何であるか疑問に思っていました。Pythonパッケージ(eggなど)が必要な理由

+0

私はそれが何であるか知っています。コンパイルのコンセプトはPythonには当てはまりません(例えば、Cやjavaなど)。 –

答えて

2

Python Packaging User Guideは、このトピックに次のように言っている:

ホイールと卵はは、建物やコンパイルを必要としないことをインストールアーティファクトを必要とするユースケースをサポートすることを目指して、両方のパッケージ形式ですこれは、テストおよび制作ワークフローで高価になる可能性があります。

これらの形式は、バイナリ拡張モジュールを含むパッケージを配布するために使用できます。これにより、インストール時にコンパイルが必要になります。何のコンパイルがsource distribution関与されていない場合は

は、原則的には十分であるが、ユーザーガイドでは、まだパフォーマンス上の理由からホイール作成することをお勧めします。

python setup.py sdist:、あなたがソースのディストリビューションを作成する必要があります

最小限に

"ソースディストリビューション"はビルドされていない(ビルドディストリビューションではない)ため、pipでインストールする場合はビルドステップが必要です。 ディストリビューションが純粋なPython(拡張子を含まない)であっても、ビルドステップを使用してsetup.pyからインストールメタデータを構築します。

[...]

また、プロジェクトのホイールを作成する必要があります。ホイールは、ビルドプロセスを経ることなくインストールできるビルドパッケージです。ホイールのインストールは、ソース配布からのインストールよりも、エンドユーザーにとって大幅に高速です。

簡潔に言えば、パッケージは利便性の高いもので、主にユーザーのためのものです。

ホイールパッケージは、純粋なPython、プラットフォームに依存するコード、またはコンパイルされた拡張機能を含むプロジェクトの配布とインストールのプロセスを統一します。パッケージがPythonまたはCで書かれているのであれば、ユーザは気にする必要はありません。

+0

ありがとうございますが、私が仕事をしているすべてのプロジェクトには設定ファイルとPythonスクリプトしかありませんので、コンパイルする必要はありません。したがって、私はパッケージングが通常使用されるものではないと考えています(少なくとも私の場合) –

+0

ありがとう!私の質問に答えています:) –

1

Eggパッケージは古い標準ですので、現在は無視してください。それらが作成されないように./setup.py installの代わりにpip install .を使用してください。 (付記:これはまた、.zipであり、Pythonはパッケージデータを読み込みます。最も正確なものではありません)

ホイールパッケージは、新しい標準です。 Windows、macOS、およびLinux用の移植性のあるバイナリパッケージの作成を可能にします(yes, Linux!)。現在では、pip install PyQt5(例として)を実行するだけで、正常に動作し、システム上でC++コンパイラとQtライブラリは必要ありません。すべてが事前にコンパイルされ、ホイールに組み込まれています。 setup.py(すべてのメタデータがホイールに入っています)を実行しないほうが安全なので、バイナリ以外のパッケージも有効です。 (付録:これらはまた.zipですが、インストール時に開梱されています)

+0

ありがとうございます。しかし、私のプロジェクトにpythonスクリプトと設定ファイルだけが含まれていると、ホイールパッケージは効果がありません。 –

+0

@ M.Buil http://pythonwheels.com/ - *インストールのための任意のコードの実行を避けます。 (setup.pyは避けてください)。インストールの一環として.pycファイルを作成して、使用するPythonインタプリタと一致するようにします。プラットフォームとマシン間の一貫性のあるインストール –

関連する問題