Python ライブラリ/アプリケーションを .egg ファイルとしてパッケージ化する利点は何ですか?

StackOverflow https://stackoverflow.com/questions/47953

質問

.egg ファイルについていくつか読み、lib ディレクトリにそれらのファイルがあることに気付きましたが、開発者としてそれを使用する利点と欠点は何ですか?

役に立ちましたか?

解決

から Python Enterprise Application Kit コミュニティ:

「Python にとっての卵は、Java にとっての Jar のようなものです...」

Python Eggsは、Pythonプロジェクトに追加情報をバンドルする方法であり、プロジェクトの依存関係を実行時にチェックして満足させることを可能にし、プロジェクトが他のプロジェクトにプラグインを提供できるようにします。卵を体現するいくつかのバイナリ形式がありますが、最も一般的なのは「.egg」zipfile形式です。なぜなら、プロジェクトを配布するのに便利な形式だからです。パッケージ固有のデータ、プロジェクト全体のメタデータ、C拡張、Pythonコードなど、すべての形式がサポートされています。

Python Eggsの主な利点は次のとおりです。

  • 「簡単インストール」Python パッケージ マネージャーなどのツールが有効になります。

  • .eggファイルは、Pythonパッケージの「ゼロインストール」形式です。ビルドまたはインストールステップは必要ありません。PythonPathまたはSys.Pathにそれらを置いて使用して使用します(C拡張またはデータファイルが使用されている場合はランタイムがインストールされる必要があります)

  • 依存する他のエッグなどのパッケージのメタデータを含めることができます

  • 「名前空間パッケージ」(他のパッケージを含むパッケージ)を個別の分布に分割することを許可します(例:ゾープ。, 、ねじれた。、ピーク。*パッケージは、常に同じ親ディレクトリの下に配置する必要がある通常のパッケージとは異なり、個別の卵として配布できます。これにより、今では巨大なモノリシックパッケージを別々のコンポーネントとして配布できます。)

  • アプリケーションまたはライブラリが必要なバージョンのライブラリを指定できるようにするため、例えばImport twisted.internetを実行する前に( "twisted-internet> = 2.0")要求します。

  • 卵のランタイムが卵を見つけて広告されたエントリポイントを見つけるための単純なAPIを提供するため、拡張可能なアプリケーションやフレームワーク(0.9B1のプラグインに卵を使用するTRACなど)に拡張機能またはプラグインを配布するための優れた形式です。 Eclipseの「拡張ポイント」の概念に)。

  • また、Javaの「Jar」形式の利点と同様に、標準化された形式を持つことからもたらされる可能性のある他の利点もあります。

-アダム

他のヒント

卵 1 個だけでは、適切なソースリリースよりも優れているわけではありません。良い点は依存関係の処理です。debian や rpm パッケージと同様に、他の Egg に依存していると言うことができ、それらは自動的にインストールされます ( pypi.python.org).

2 番目のコメント:Egg フォーマット自体はバイナリパッケージ化されたフォーマットです。Python コードだけで構成される通常の Python パッケージは、「ソース リリース」として配布するのが最適です。つまり、.tar.gz になる「python setup.py sdist」です。これらは、pypi にアップロードされる場合、一般に「卵」とも呼ばれます。

二値卵が必要な場合:C コード拡張をバンドルするとき。その場合、いくつかのバイナリエッグ (32 ビット UNIX のもの、Windows のものなど) が必要になります。

Egg は、Python アプリを配布するための非常に優れた方法です。これは、すべての依存関係などをインストールする、プラットフォームに依存しない .deb ファイルと考えてください。利点は、エンドユーザーにとって使いやすいことです。欠点は、アプリを .egg ファイルとしてパッケージ化するのが面倒な場合があることです。

.eggs に加えて、別のインストール手段も提供する必要があります。ソフトウェア プログラムが必要なソフトウェアをインストールするという考えが気に入らないため、egg の使用を好まない人もいます。これらは通常、システム管理者タイプである傾向があります。

.egg ファイルは基本的に、Python アプリケーションをデプロイするための優れた方法です。これは、Java の .jar ファイルのようなものと考えることができます。

より詳しい情報 ここ.

何をする場合でも、アプリケーションを tarball として配布することをやめないでください。tarball は、パッケージ システムを備えたオペレーティング システムにとって最も簡単にパッケージ化できる形式であるためです。

単純な Python プログラムの場合は、おそらく Egg を使用する必要はありません。生の .py ファイルを配布するだけで十分です。GNU/Linux のソース ファイルを配布するようなものです。さまざまな OS の「パッケージャー」 (py2exe や py2app など) を使用して、さまざまなオペレーティング システム用の .exe、.dmg、またはその他のファイルを作成することもできます。

より複雑なプログラム、例:Django では、さまざまなモジュールと依存関係が必要なため、ほとんどの場合、egg が必要になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top