50

site-packagesグローバルディレクトリへの書き込みアクセス権がないシステムで、環境を変更せずにモジュールを検出可能にしようとしています( PYTHONPATH)。.pth実行しているスクリプトと同じディレクトリにファイルを配置しようとしましたが、無視されているようです。extras.pthたとえば、次の内容のファイルを作成しました。

N:\PythonExtras\lib\site-packages

ただし、同じディレクトリに配置して実行する次のスクリプトは、を出力しFalseます。

import sys
print r"N:\PythonExtras\lib\site-packages" in sys.paths

sys.path私が書き込みアクセス権を持っている唯一のディレクトリは、スクリプトを含むディレクトリです。配置して表示できる別の(現在は存在しない)ディレクトリはありextras.pthますか?これについてもっと良い方法はありますか?

私はWindowsでPython2.7を使用しています。.pthここで見つけたすべての質問は、システムモジュールディレクトリを使用しています。

Edit: I've tracked down the Windows per-user installation directory, at %APPDATA%\Python\Python27\site-packages. I can place a module there and it will be imported, but if I put a .pth file there, it has no effect. Is this really not supposed to work, or am I doing something wrong?

4

2 に答える 2

64

ドキュメントで説明されているように、PTH ファイルは site-packages ディレクトリにある場合にのみ処理されます。(より正確には、「サイト ディレクトリ」にある場合は処理されますが、「サイト ディレクトリ」自体は Python インストールに対してグローバルな設定であり、現在のディレクトリやスクリプトが存在するディレクトリには依存しません。)

スクリプトを含むディレクトリが on の場合、そのディレクトリに をsys.path作成できますsitecustomize.py。これは、Python の起動時にロードされます。内部sitecustomize.pyでは、次のことができます。

import site
site.addsitedir('/some/dir/you/want/on/the/path')

これにより、そのディレクトリが追加されるだけでなく、「サイト ディレクトリ」として追加され、そこにある PTH ファイルが処理されます。site-packagesこれは、独自の個人用ディレクトリを作成する場合に便利です。

パスに 1 つまたは 2 つのディレクトリを追加するだけでよい場合は、より簡単に行うことができます。を操作する小さな Python ライブラリを作成し、sys.pathそのライブラリをスクリプトからインポートするだけです。何かのようなもの:

# makepath.py
import sys
sys.path.append('/whatever/dir/you/want')

# script.py
import makepath

編集: 繰り返しますが、ドキュメントによると、 %APPDATA%\Python\PythonXY\site-packages(Windows の場合)にサイト固有のディレクトリが存在する可能性があります。実際に(スクリプトディレクトリだけでなく)それへの書き込みアクセス権がある場合は、それを試すことができます。

于 2013-03-04T19:06:13.950 に答える