257


116

永久にディレクトリをPYTHONPATHに追加しますか?

「sys.path.append」を使用するたびに、新しいディレクトリが追加されます。 ただし、Pythonを閉じると、リストは以前の(デフォルト?)値に戻ります。 ディレクトリを「PYTHONPATH」に永続的に追加するにはどうすればよいですか?

15 回答


360


(MacまたはGNU / Linuxディストリビューションで)bashを使用している場合は、これを `〜/ .bashrc`に追加します

export PYTHONPATH="${PYTHONPATH}:/my/other/path"


112


環境変数 `PYTHONPATH`に新しいディレクトリを追加する必要があります。これは、以前の内容からコロンで区切られています。 Unixのどの形式でも、使用しているシェル(お気に入りのシェルに応じて、 `.profile`など)に適した起動スクリプトで、問題のシェルに依存するコマンドを使用して、これを行うことができます。 Windowsでは、目的のためにシステムGUIから実行できます。

「superuser.com」は、さらに質問するのに適した場所です。 選択したプラットフォームとシェルで環境変数を充実させる方法についての詳細が必要な場合の詳細については、それ自体がプログラミングの問題ではないためです。


74


`PYTHONPATH`を操作する代わりに、http://docs.python.org/library/site.html [パス設定ファイル]を作成することもできます。 Pythonがこの情報を検索するディレクトリを最初に見つけます。

python -m site --user-site

何らかの理由で、これはPython 2.7では機能しないようです。 そこで使用できます:

python -c 'import site; site._script()' --user-site

次に、追加するパスを含むそのディレクトリに `.pth`ファイルを作成します(ディレクトリが存在しない場合は作成します)。

例えば:

# find directory
SITEDIR=$(python -m site --user-site)

# create if it doesn't exist
mkdir -p "$SITEDIR"

# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"


26


これはWindowsで動作します

  1. Windowsでは、Python 2.7を使用してPythonセットアップフォルダーに移動します。

  2. Lib / site-packagesを開きます。

  3. このフォルダーにexample.pth空のファイルを追加します。

  4. 各行に1つずつ、必要なパスをファイルに追加します。

その後、スクリプトからこれらのパス内のすべてのモジュールを表示できるようになります。


19


pythonrcファイルを介してパスを追加できます。これは、Linuxではデフォルトで〜/ .pythonrcです。 ie.

import sys
sys.path.append('/path/to/dir')

また、 PYTHONPATH`環境変数を、MacまたはLinuxの場合は〜/ .profile`のようなグローバルrcファイルで、またはコントロールパネル→システム→ Windowsの場合は環境変数→環境変数で設定できます。


19


まだ混乱している場合-Macを使用している場合は、次の手順を実行します。

  1. ターミナルを開く

  2. 「open .bash_profile」と入力します

  3. ポップアップするテキストファイルで、最後に次の行を追加します。 export PYTHONPATH = $ PYTHONPATH:foo / bar

  4. ファイルを保存し、ターミナルを再起動すれば完了です


11


もう少し説明するために、Pythonは自動的に検索パスを構築します(https://stackoverflow.com/a/12311321/436794 [上記]およびhttps://superuser.com/a/247649/74173[here] ) site.py`スクリプト(通常はsys.prefix + lib / python / site-packages`および `lib / site-python`にあります)を使用します。 sys.prefixの値を取得できます。

python -c 'import sys; print(sys.prefix)'

次に、site.pyスクリプトは、 / usr / {lib、share} / python / dist-packages、` / usr / local / lib / python / dist-packages`など、プラットフォームに応じていくつかのディレクトリを追加します検索パスに*また*これらのパスを検索して、特定の追加の検索パスを含む `.pth`設定ファイルを探します。 たとえば、_easy-install_は、Ubuntuの `/ usr / local / lib / python2.7 / dist-packages / easy-install.pth`などのシステム固有のファイルに追加されるインストール済みパッケージのコレクションを維持します。 典型的なシステムでは、sys.pathの予期しないパスを説明できるこれらの.pthファイルがたくさんあります。

python -c 'import sys; print(sys.path)'

したがって、.pthファイルを作成し、これらのディレクトリのいずれかに配置することができます(https://stackoverflow.com/a/12311321/436794 [上記]に記載されているsitedirを含む)。 これは、PYTHONPATHを使用するのではなく、ほとんどのパッケージがsys.pathに追加される方法のようです。

注:OSXには、「フレームワークビルド」のためにsite.pyによって追加された特別な追加の検索パスがあります(ただし、Pythonの通常のコマンドライン使用では機能するようです): / Library / Python // site-packages(例: Python2.7の場合: / Library / Python / 2.7 / site-packages /)これは、サードパーティのパッケージがインストールされることになっています(そのディレクトリのREADMEを参照)。 したがって、そこに追加の検索パスを含むパス構成ファイルを追加できます。 `/ usr / local / lib / python2.7 / site-packages /`を含む `/ Library / Python / 2.7 / site-packages / pip-usr-local.pth`というファイルを作成すると、システムpythonが追加しますその検索パス。


9


Linuxでは、環境変数を処理することなく、パッケージからPYTHONPATHのディレクトリへのシンボリックリンクを作成できます。 何かのようなもの:

ln -s /your/path /usr/lib/pymodules/python2.7/


9


私にとっては、 `.bash_profile`ファイルを変更したときに機能しました。 `.bashrc`ファイルを変更するだけで、シェルを再起動するまで機能しませんでした。

Python 2.7の場合、次のようになります。

export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"

`.bash_profile`ファイルの最後。


6


PYTHONPATH`が現在存在しない場合(のため)〜/ .bashrcに export PYTHONPATH = "$ {PYTHONPATH}:/ my / other / path" `を追加しても機能しない場合があります。

export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"

〜/ .bashrcに上記を追加すると、Ubuntu 16.04でうまくいきました。