回答:
.jar
Javaのファイルと同じ概念で、コードをバンドルとして配布するための、.zip
一部のメタデータファイルの名前が変更されたファイルです.egg
。
「Pythonエッグ」は、Pythonプロジェクトの特定のバージョンのリリースを具体化する論理構造であり、そのコード、リソース、メタデータで構成されます。Pythonの卵を物理的にエンコードするために使用できる複数の形式があり、他の形式も開発できます。ただし、Pythonの卵の主要な原則は、それらを発見およびインポートできるようにすることです。つまり、Pythonアプリケーションがシステムに存在する卵を簡単かつ効率的に見つけ、目的の卵の内容を確実にインポートできるようにする必要があります。
.egg
プロジェクトは基本的に単一のディレクトリまたはファイル内に自己完結しており、他のプロジェクトのコードやリソースと混ざっていないため、この形式は配布とコードの簡単なアンインストールまたはアップグレードに適しています。また、個々のプログラムが使用するバージョンを選択できるように、プロジェクトの複数のバージョンを同時にインストールすることもできます。
この.egg
ファイルは、Pythonパッケージの配布形式です。これは、ソースコードの配布またはWindowsの単なる代替手段exe
です。ただし、pureのPython
場合、.egg
ファイルは完全にクロスプラットフォームです。
.egg
ファイル自体は基本的にある.zip
ファイル。拡張子を「zip
」に変更すると、アーカイブ内にフォルダが含まれることがわかります。
また、.egg
ファイルがある場合は、パッケージとしてインストールできます。easy_install
例:.egg
ディレクトリmymath
自体にいくつかのpythonスクリプトがある可能性があると言うファイルを作成するには、次の手順を実行します。
# setup.py
from setuptools import setup, find_packages
setup(
name = "mymath",
version = "0.1",
packages = find_packages()
)
次に、ターミナルから以下を実行します。
$ python setup.py bdist_egg
これにより多くの出力が生成されますが、完了すると、build、dist、mymath.egg-infoの3つの新しいフォルダーがあることがわかります。私たちが気にする唯一のフォルダーは、あなたのファイルを見つけるdistフォルダーで、デフォルトのpython(インストール)バージョン番号が付いています(ここにあります:3.5).egg
mymath-0.1-py3.5.egg
ソース:Pythonライブラリブログ
Python eggは、追加情報をPythonプロジェクトにバンドルする方法です。これにより、実行時にプロジェクトの依存関係をチェックして満たすことができ、プロジェクトが他のプロジェクトのプラグインを提供できるようになります。卵を具体化するバイナリ形式はいくつかありますが、最も一般的なのは「.egg」zipfile形式です。これは、プロジェクトを配布するのに便利な形式であるためです。パッケージ固有のデータ、プロジェクト全体のメタデータ、C拡張、Pythonコードなど、すべての形式がサポートされています。
Python eggをインストールして使用する最も簡単な方法は、「Easy Install」Pythonパッケージマネージャを使用することです。これにより、eggが検出、ダウンロード、ビルド、インストールされます。必要なのは、使用するPythonプロジェクトの名前(およびオプションでバージョン)を伝えるだけです。
Python eggは、Python 2.3以降で使用でき、setuptoolsパッケージを使用してビルドできます(ソースコードについては、Python Subversionサンドボックス、または現在のインストール手順については、EasyInstallページを参照してください)。
Pythonの卵の主な利点は次のとおりです。
「Easy Install」Pythonパッケージマネージャーなどのツールを有効にします
.eggファイルは、Pythonパッケージの「ゼロインストール」形式です。ビルドやインストールの手順は必要ありません。PYTHONPATHまたはsys.pathに配置して使用するだけです(C拡張機能またはデータファイルを使用する場合は、ランタイムのインストールが必要になる場合があります)。
依存する他の卵などのパッケージメタデータを含めることができます。
それらは、「名前空間パッケージ」(他のパッケージのみを含むパッケージ)を別々のディストリビューションに分割することを可能にします(例:zope。、twisted。、peak。*パッケージは、常に同じ場所に配置する必要がある通常のパッケージとは異なり、別々の卵として配布できます。親ディレクトリ。これにより、巨大なモノリシックパッケージを個別のコンポーネントとして配布できます。
これにより、アプリケーションまたはライブラリーが必要なライブラリーのバージョンを指定できるため、例えば、twisted.internetのインポートを実行する前にrequire( "Twisted-Internet> = 2.0")できます。
拡張機能やプラグインを拡張可能なアプリケーションやフレームワーク(0.9b1以降のプラグインにeggを使用するTracなど)に配布するための優れたフォーマットです。eggランタイムは、eggを見つけてアドバタイズされたエントリポイントを見つけるためのシンプルなAPIを提供するためです(同様) Eclipseの「拡張ポイント」の概念)。
Javaの「jar」形式の利点と同様に、標準化された形式を使用することで得られる他の利点もあります。
「卵」は、Python関連のプロジェクト用の単一ファイルのインポート可能な配布形式です。
「Python Eggのクイックガイド」には、「JarはJavaと同じように、卵はPythonのものである...」と記載されています。
卵は実際には瓶よりも豊富です。ライセンスの詳細、リリースの依存関係などの興味深いメタデータを保持しています。