82

誰かが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に表示したい場合は、モジュールディレクトリとegg-infoディレクトリをサイトにシンボリックリンクできますか?パッケージディレクトリ?私はこれを自分で試しただけですが、パッケージがsetuptoolsに表示されるかどうかをテストする方法がわかりません。これをテストする方法も教えていただければボーナスポイント:)

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

4

1 に答える 1

72

.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ファイルを操作します。

于 2008-11-02T06:40:26.033 に答える