20

site-packages一部のパッケージをサードパーティのディレクトリ (標準のシステムの場所以外)にインストールしたいと考えています。その中の .pth ファイルが尊重されるようにこれを設定する方法はありますか?


背景: OS X、virtualenv、自作を使用しています。pip を介して virtualenv にうまくインストールできないパッケージ (特に私の場合は wxPython) がいくつかあります。このような場合、代わりに動作する自作パッケージがあります。Homebrew は に 3 番目の site-packages フォルダーを作成します/usr/local/lib/python2.7。このフォルダを指定して、そこにあるすべてのアイテムの管理を の管理下に置きたいと思いますbrew。ただし、これは不可能のようです。

この問題に関心を持っているのは、もちろん私だけではありません。私が遭遇した一般的な「pthファイルが機能しない」という質問やオンライン投稿のかなりの数が、この問題に関連していると思います。良い解決策はありますか?

4

2 に答える 2

21

サイトモジュールを見てください。addsitedirそれはあなたが望むことをするべき機能を提供します。

これを使用する最も簡単な方法は、sitecustomize.pyorという名前のファイルを作成し、次の内容でusercustomize.py現在のPYTHONPATHディレクトリ (または最終的に になる任意のディレクトリ) に配置することです。sys.path

import site
site.addsitedir('/usr/local/lib/python2.7')

Python が開始されると、 import が試行されsitecustomize、次にが試行されusercustomizeます。これが、これが機能する理由です。サイトのドキュメントから:

これらのパス操作の後、sitecustomize任意のサイト固有のカスタマイズを実行できる という名前のモジュールのインポートが試行されます。これは通常、システム管理者によって site-packages ディレクトリに作成されます。このインポートがImportError例外で失敗した場合、それは黙って無視されます。

この後、が true のusercustomize場合、任意のユーザー固有のカスタマイズを実行できるという名前のモジュールのインポートが試行されます。ENABLE_USER_SITEこのファイルは、ユーザーの site-packages ディレクトリ (以下を参照) に作成されることを意図していsys.pathます-s。AnImportErrorは黙って無視されます。

于 2012-05-21T23:06:08.803 に答える
1

ユーザーがシステム全体の への管理者アクセス権を持っていない状況に対処するために、特にユーザーごとのディレクトリの作成に対処するPEP 370がありました。site-packagessite-packages

たとえば、Unix (Mac OS を含む) で、Python 3.6 を使用していると仮定すると、次のディレクトリを作成し、.pthそこにファイルを配置できます。

~/.local/lib/python3.6/site-packages

于 2017-12-16T08:59:48.090 に答える