0

カスタムプレフィックスにインストールされたzip形式のeggにdistutilsによってパッケージ化されたPythonモジュールがあります。そのプレフィックスのsite-packagesディレクトリを含むようにPYTHONPATHを設定すると、eggがsys.pathに追加され、モジュールをインポートできます。ただし、スクリプト内からプレフィックスのsite-packagesディレクトリを指定してsite.addsitedirを実行すると、eggがsys.pathに追加されず、モジュールのインポートが失敗します。どちらの場合も、モジュールのsite-packagesディレクトリはsys.pathになります。

これは予想される動作ですか?もしそうなら、env変数を設定せずに特定のディレクトリ内の.pthファイルを処理するようにPythonに指示する方法はありますか?

4

1 に答える 1

2

そのプレフィックスのsite-packagesディレクトリを含むようにPYTHONPATHを設定すると、eggがsys.pathに追加され、モジュールをインポートできます。

にディレクトリを追加しても、その中のファイルPYTHONPATHの処理はトリガーされません.pth。したがって、圧縮された卵はに含まれませんsys.path。卵自体が入っている場合にのみ、卵からモジュールをインポートできますsys.path(親ディレクトリでは不十分です)。

ただし、スクリプト内からプレフィックスのsite-packagesディレクトリを指定してsite.addsitedirを実行すると、eggがsys.pathに追加されず、モジュールのインポートが失敗します。

site.addsitedir().pthディレクトリがまだ表示されていない場合は、ファイルの処理をトリガーするため、機能するはずです。

あなたが説明した振る舞いは、起こるべきことの反対です。

sys.path回避策として、卵を手動で追加できます。sys.path.insert(0, '/path/to/the.egg')

于 2012-07-20T09:35:05.043 に答える