Pythonパッケージとegg-infoディレクトリ


80

誰かがegg-infoディレクトリがそれぞれのモジュールにどのように関連付けられているかを説明できますか?たとえば、私は次のものを持っています:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

egg-infoディレクトリは対応するモジュールをsetuptools(easy_install)に見えるようにすることだと思いますよね?もしそうなら、setuptoolsはどのようにegg-infoディレクトリをモジュールディレクトリに結び付けますか?

私が正しい方向に進んでいると仮定すると、例として...私の既存のパッケージをsetuptoolsに表示したい場合は、moduleディレクトリとegg-infoディレクトリをサイトにシンボリックリンクできますか?パッケージディレクトリ?私はこれを自分で試したはずですが、パッケージがsetuptoolsに表示されるかどうかをテストする方法がわかりません。これをテストする方法も教えていただければボーナスポイント:)

私がこれらすべてを理解しようとしている主な理由は、モジュールの一部をサイトパッケージにシンボリックリンクして、モジュールに変更を加え、それらを使用するスクリプトに変更を再インストールせずに表示できるようにするためです。各変更後のPyPIからの卵。


Python用のquodlibetプラグインがまだどこかにぶら下がっていますか?それは本当にクールに聞こえます。
ピーターターナー

@PeterTurnerそれはおそらくクオドリベットそのものです-それはPythonで書かれています
Florian Brucker

回答:


71

.egg-infoディレクトリは、-single-version-externally-managedがeggのインストールに使用された場合にのみ作成されます。「通常」、eggをインストールすると、コードとメタデータの両方を含む単一のディレクトリ(またはzipファイル)が作成されます。

pkg_resources(メタデータを読み取るライブラリ)にはrequire、パッケージの特定のバージョンを要求するために使用できる関数があります。「古いスタイル」の通常のインポートの場合、easy_installは.pthファイルをハッキングして、eggディレクトリをsys.pathに取得します。--single-version-externally-managedの場合、インストールされるバージョンは1つだけであるため(rpmやdpkgなどのシステムのパッケージングインフラストラクチャによって)、このハッキングは必要ありません。使用するアプリケーションrequire(または他のpkg_resourcesバインディングメカニズム)のegg-infoは引き続き含まれます。

ハードリンクでパッケージをインストールしたい場合は、「setup.pydevelop」を使用することをお勧めします。これはsetuptoolsからのコマンドで、実際にはeggをインストールしませんが、サイト全体で利用できるようにします。そのために、pkg_resourcesが見つけることができるようにegg-linkファイルを作成し、通常のインポートがそれを見つけることができるように.pthファイルを操作します。


27
の効果を元に戻すにはsetup.py developsetup.py develop -u
codewarrior 2011

小文字であることに注意してください-u。大文字-Uは他のことをします。
CGFoX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.