287


52

システムの `PYTHONPATH`変数にどのディレクトリがリストされているのかをPythonスクリプト(あるいはインタラクティブシェル)からどうやって知るのですか?

4 回答


493


あなたはおそらくこれも欲しいでしょう:

sys印刷(sys.path)をインポートします。

またはターミナルからワンライナーとして:

python -c "sysのインポート; print( '\ n'.join(sys.path))"


189


sys.path`には、あなたの PYTHONPATH`環境変数に特にない項目が含まれるかもしれません。 変数を直接問い合わせるには、次のようにします。

Import os try:user_paths = os.environ ['PYTHONPATH']。KeyError以外のsplit(os.pathsep):user_paths = []


10


他の答えを編集することはできません。 Windowsのみであるという点で軽微なエラーがあります。 より一般的な解決策は、以下のようにos.sepを使用することです。

sys.pathには、PYTHONPATH環境変数に特に含まれていない項目が含まれている可能性があります。 変数を直接問い合わせるには、次のようにします。

import os os.environ ['PYTHONPATH']。split(os.pathsep)


1


PYTHONPATHは、値がディレクトリのリストである環境変数です。 一度設定されると、他の標準入力と共にインポートされたモジュールを検索するためにPythonによって使用されます。 Pythonの "sys.path"にリストされているサードパーティのライブラリディレクトリ。

他の環境変数と同様に、シェルまたは〜/ .bashrcのどちらでもエクスポートできます。 ここを参照してください。 以下に示すように、os.environ ['PYTHONPATH']にPythonでその値を問い合わせることができます。

$ python3 -c "import os、sys; print(os.environ ['PYTHONPATH']); sort(os.environ)の 'PYTHONPATH'の場合はprint(sys.path)、それ以外の場合はprint( 'PYTHONPATHは定義されていません'" "

IFがシェルで次のように定義されている

$ export PYTHONPATH = $ HOME / Documents / DjangoTutorial / mysite

THEN結果⇒

/ home / Documents / DjangoTutorial / mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

ELSE結果⇒

PYTHONPATHが定義されていません

PYTHONPATHを複数のパスに設定するには、https://stackoverflow.com/questions/39682688/how-to-set-pythonpath-to-multiple-folders [ここ]を参照してください。

実行時にsys.path.insert()、delまたはremove()を介して検索パスを追加または削除できますが、os.environ []を介してはできません。 例:

>>> os.environ ['PYTHONPATH'] = "$ HOME / Documents / DjangoTutorial / mysite" >>>ソート済み(os.environ)の 'PYTHONPATH' True >>> sys.path //しかしありません
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

>>> sys.path.insert(0、os.environ ['PYTHONPATH'])>>> sys.path //そこにあります
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>

まとめると、PYTHONPATHはsys.pathにインポートされたモジュールのPython検索パスを指定する1つの方法です。 PYTHONPATHを使わずにsys.pathに直接リスト操作を適用することもできます。