私はいくつかのPythonパッケージを維持しています。それぞれに非常によく似たsetup.py
ファイルがあります。ただし、実行するsetup.py install
と、パッケージの1つがeggとしてインストールされ、他のパッケージは「eggフォルダー」、つまり拡張子が「egg」のフォルダーとしてインストールされます。
この異なる動作を引き起こすそれらの違いは何ですか?
私はいくつかのPythonパッケージを維持しています。それぞれに非常によく似たsetup.py
ファイルがあります。ただし、実行するsetup.py install
と、パッケージの1つがeggとしてインストールされ、他のパッケージは「eggフォルダー」、つまり拡張子が「egg」のフォルダーとしてインストールされます。
この異なる動作を引き起こすそれらの違いは何ですか?
Python Eggsの内部構造、Zipサポートメタデータ:
存在する場合
zip-safe
は、プロジェクトがzipファイルとしてインストールされたときに正しく機能すること.egg
を意味し、逆に存在not-zip-safe
する場合は、プロジェクトをファイルとしてインストールしないことを意味し.egg
ます[つまり、.egg
ディレクトリとして]。zip_safe
setuptoolsのオプションによりsetup()
、書き込まれるファイルが決まります。オプションが提供されていない場合、setuptoolsは、コードとコンテンツの分析に基づいて、パッケージが機能するかどうかを独自に評価しようとします。
単一のeggファイルは、実際には、内部に特定のディレクトリ構造を持つzipアーカイブです。zipimportのドキュメントによると、zipファイルからインポートできるのは、、、およびファイル.py
のみ.pyc
です。.pyo
したがって、パッケージが他の種類のモジュールリソース(コンパイルされたcコード、.so
ファイル、.pyd
ファイルなど)をインポートする必要がある場合、zipファイルとしては機能しません。
これが一部の卵がzipアーカイブとして機能しない唯一の理由であるかどうかはわかりませんが、それが主な理由だと思います。