web-dev-qa-db-ja.com

Pythonスクリプトで、PYTHONPATHを設定するにはどうすればよいですか?

/ etc/profileと環境変数で設定する方法を知っています。

しかし、スクリプト中に設定したい場合はどうでしょうか?それはos、sysをインポートしていますか?どうすればいいのですか?

95
TIMEX

PYTHONPATHを設定せず、エントリを sys.path に追加します。これは、Pythonパッケージを検索する必要があるディレクトリのリストです。したがって、そのリストにディレクトリを追加するだけです。

sys.path.append('/path/to/whatever')

実際、sys.pathは、パス区切り文字(Linuxのようなシステムでは:、Windowsでは;)でPYTHONPATHの値を分割することにより初期化されます。

site.addsitedir を使用してディレクトリを追加することもできます。このメソッドは、渡すディレクトリ内に存在する.pthファイルも考慮します。 (PYTHONPATHで指定するディレクトリには当てはまりません。)

165
David Z

os.environを介して環境変数を取得および設定できます。

import os
user_home = os.environ["HOME"]

os.environ["PYTHONPATH"] = "..."

ただし、インタープリターは既に実行されているため、これは効果がありません。使用したほうがいい

import sys
sys.path.append("...")

これは、PYTHONPATHがインタープリターの起動時に変換される配列です。

30
miku

質問を再開して申し訳ありませんが、誰かを助けることができると思います:

sys.path.append('dir/to/path')を追加せずに追加すると、既に追加されている場合、sys.pathに長いリストを生成できます。そのために、私はこれをお勧めします:

import sys
import os # if you want this directory

try:
    sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
    sys.path.append('/dir/path') # Or os.getcwd() for this directory

誰かが質問を再開するのがいらいらしてすみません。

PYTHONPATHは sys.path になります。これは実行時に変更できます。

import sys
sys.path += ["whatever"]
5
unbeli

os.environ['PATHPYTHON']=/some/pathPYTHONPATHを設定し、os.system('python')を呼び出してpythonシェルを再起動して、新しく追加したパスを有効にする必要があります。

0
tesla1060