.egg ファイルについていくつか読んだことがありますが、lib ディレクトリにあることに気付きましたが、開発者として使用することの利点/欠点は何ですか?
6 に答える
Python Enterprise Application Kit コミュニティから:
「Jar が Java にあるように、卵は Python にあります...」
Python Egg は、追加情報を Python プロジェクトにバンドルする方法です。これにより、プロジェクトの依存関係を実行時にチェックして満たすことができ、プロジェクトが他のプロジェクトにプラグインを提供できるようになります。Egg を具体化するバイナリ形式はいくつかありますが、最も一般的なのは「.egg」zipfile 形式です。これは、プロジェクトを配布するのに便利な形式だからです。パッケージ固有のデータ、プロジェクト全体のメタデータ、C 拡張機能、Python コードなど、すべての形式がサポートされています。
Python Eggs の主な利点は次のとおりです。
「簡単インストール」Python パッケージ マネージャーなどのツールを有効にします。
.egg ファイルは、Python パッケージの「ゼロ インストール」形式です。ビルドやインストールの手順は不要です。それらを PYTHONPATH または sys.path に配置して使用するだけです (C 拡張またはデータ ファイルを使用する場合は、ランタイムのインストールが必要になる場合があります)。
依存する他の卵などのパッケージメタデータを含めることができます
それらは、「名前空間パッケージ」(他のパッケージを含むだけのパッケージ) を別々のディストリビューションに分割することを可能にします (例: zope. 、 twisted.、peak.* パッケージは、常に同じパッケージの下に置かなければならない通常のパッケージとは異なり、別々の卵として配布できます)。親ディレクトリ。これにより、巨大なモノリシック パッケージを個別のコンポーネントとして配布できます。)
それらは、アプリケーションやライブラリが必要なライブラリのバージョンを指定できるようにするため、たとえば、 twisted.internet をインポートする前に require("Twisted-Internet>=2.0") を行うことができます。
それらは、拡張可能なアプリケーションやフレームワーク (0.9b1 の時点でプラグインに Egg を使用する Trac など) に拡張機能やプラグインを配布するための優れた形式です。 Eclipse の「拡張ポイント」の概念に対応しています)。
Java の「jar」形式の利点と同様に、標準化された形式を使用することで得られるその他の利点もあります。
-アダム
1つの卵自体は、適切なソースリリースよりも優れているわけではありません。良い部分は依存関係の処理です。debianまたはrpmパッケージのように、他の卵に依存していると言うことができ、それらは自動的にインストールされます(pypi.python.orgを介して)。
2番目のコメント:egg形式自体はバイナリパッケージ形式です。Pythonコードのみで構成される通常のPythonパッケージは、「ソースリリース」として配布するのが最適であるため、「python setup.py sdist」を実行すると、.tar.gzになります。これらは、pypiにアップロードされるときに一般に「卵」とも呼ばれます。
バイナリエッグが必要な場合:Cコード拡張をバンドルする場合。次に、いくつかのバイナリエッグ(32ビットUNIX、Windowsなど)が必要になります。
Egg は、Python アプリを配布するための非常に優れた方法です。すべての依存関係などをインストールする、プラットフォームに依存しない .deb ファイルと考えてください。利点は、エンド ユーザーにとって使いやすいことです。欠点は、アプリを .egg ファイルとしてパッケージ化するのが面倒なことです。
.eggs に加えて、別のインストール方法も提供する必要があります。ソフトウェアプログラムが必要なソフトウェアをインストールするという考えが気に入らないため、egg の使用を好まない人もいます。これらは通常、sysadmin タイプである傾向があります。
.egg ファイルは基本的に、Python アプリケーションをデプロイするための優れた方法です。Java の .jar ファイルのようなものと考えることができます。
詳細はこちら。
何をするにしても、アプリケーションを tarball として配布することをやめないでください。これは、パッケージ システムを備えたオペレーティング システムで最も簡単にパッケージ化できる形式だからです。
単純な Python プログラムの場合、おそらく卵を使用する必要はありません。生の .py ファイルを配布するだけで十分です。GNU/Linux のソース ファイルを配布するようなものです。さまざまな OS の "パッケージャー" (py2exe や py2app など) を使用して、さまざまなオペレーティング システム用の .exe、.dmg、またはその他のファイルを作成することもできます。
Django などのより複雑なプログラムでは、さまざまなモジュールと依存関係が必要なため、卵がほとんど必要です。