2008-09-06 6 views

答えて

29

Pythonの卵は、Pythonの プロジェクトで 追加情報をバンドルする方法です "ジャーは、Javaにあるよう卵が...ニシキヘビにしています"それをチェックするプロジェクトの 依存関係を可能にし、実行時に満足 、だけでなく、プロジェクトが他のプロジェクトのためのプラグイン を提供することができ 。そこに卵を具現化し、いくつかの バイナリ形式がありますが、それはプロジェクトを配布するための便利な1 だから は、最も一般的なのは、 形式zipファイル「.egg」です。 パッケージ固有のデータ、プロジェクト全体 メタデータ、Cの拡張、およびPythonの コードを含む フォーマットのサポートのすべて。 Pythonの卵 の

主な利点は以下のとおりです。

  • 彼らは

  • .eggファイルはPythonのための「ゼロインストール」フォーマットされているPythonのパッケージマネージャ「簡易インストール」のようなツールを有効にします パッケージ。まったくビルドしないか、ステップをインストール が必要とされ、ただPYTHONPATH かのsys.path上に置くと、それらを使用

  • ( Cの拡張 やデータファイルが使用されている場合はインストールされ、ランタイムが必要な場合があります)彼らは、パッケージのメタデータを含むことができ、。彼らは、例えばZopeの(「名前空間のパッケージ」(単に他の パッケージを含むパッケージ)が別々の ディストリビューションに分割することを可能にする。、ねじれた彼らは

  • に依存する他の卵など、 ピーク。*パッケージとして配布することができます通常のパッケージ とは異なり、常に別の卵になります。これは常に同じ親ディレクトリ の下に置く必要があります。これは は今、巨大な一枚岩のパッケージの別々の コンポーネントとして配布される 何ができます。)

  • 彼らは、アプリケーションやライブラリは、ライブラリの必要な バージョンを指定することができ、あなたが 例えばできるように、インポートを実行する前に を必要とする(Twisted-Internet> = 2.0) twisted.internet

  • 彼らは 拡張可能なアプリケーションの拡張やプラグインを配布し、(例えば0のよう プラグインの卵を使用していますTracの、として のフレームワークのための偉大な形式です。 ランは の卵の位置を特定し、アドバタイズされたエントリ ポイント(Eclipseの 「拡張ポイント」コンセプトに似ています)を見つけるための単純なAPIを提供するためです。

  • Javaの「jar」形式の利点と同様に、標準化された 形式を使用することによってもたらされる他の利点もあります。

-Adam

+0

しかし、依存するPythonパッケージにバイナリの卵がPyPiにアップロードされていない場合はどうなりますか? – Mitar

2

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

詳細情報here

3

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

また、.eggsに加えて、別のインストール方法を提供する必要があります。卵を使うのが好きでない人もいれば、ソフトウェアをインストールするというアイデアが好きではないからです。これらは通常、システム管理者のタイプです。

1

パッケージのsysetemを持つオペレーティングシステムで最も簡単なパッケージ形式であるため、アプリケーションの配布やtarballの配布はやめてください。

1

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

さらに複雑なプログラム。 Djangoは、必要なさまざまなモジュールと依存関係のためにかなりの量の卵を必要とします。

4

1個の卵は、それ自体が適切な放出源よりも優れていません。良い部分は依存関係処理です。 debianやrpmパッケージのように、あなたは他の卵に依存していると言うことができ、自動的に(pypi.python.orgを介して)インストールされます。

第2のコメント:卵のフォーマットそのものはバイナリのパッケージ形式です。 Pythonコードだけで構成されている通常のPythonパッケージは、 "ソースリリース"として最もよく配布されます。したがって、 "python setup.py sdist"は.tar.gzという結果になります。これらは、ピピにアップロードされると、一般に「卵」と呼ばれます。

バイナリエッグが必要な場所:Cコード拡張をバンドルするとき。いくつかのバイナリの卵(32ビットのunix one、windows oneなど)が必要になります。

+0

しかし、依存するPythonパッケージにバイナリの卵がPyPiにアップロードされていない場合はどうなりますか? – Mitar

+0

コンパイラの問題がそのまま残っています。魔法の解決法はありません。あなたは、事前にコンパイルされたパッケージ/卵を持っているかどうかです。 –

+0

はい、私はプリコンパイルされたパッケージ/ eggを持っていますが、依存関係はどうですか? eggがPyPiで利用できない場合、これとこのリポジトリを使用してくださいと言う方法がありますか? – Mitar

関連する問題