デフォルトのPYTHONPATH(sys.path)をグローバルに変更する方法は?


33

Ubuntu(10.10)システムでは、自分自身をにインストールするPythonパッケージがあります/usr/local/lib/python2.6/site-packages/。これはデフォルトのパス(sys.path)には含まれていません。このディレクトリをパスに追加するにはどうすればよいですか?

$PYTHONPATH環境変数を設定することはもちろん解決策ですが、これを行うためのよりエレガントな方法を探しています。たとえば、easy_installインストールされたパッケージもその中に置きます。sys.pathは次のようになります。

['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg', 
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',  
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0']

そのため、パスは明らかにPythonバイナリに組み込まれたデフォルトではありません。

上記のエントリを含む単一の構成ファイルはありますか?または、どのように変更することができますか?

回答:


27

サイトモジュールのマニュアルおよび修正Pythonの検索パスは、あなたが探しているものと思われます。

私の知る限り、これらのエントリは次の方法で追加さsys.pathれています。

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (Pythonのバージョンに2.6を変更します。)

変更する最も簡単な方法は、/usr/local/lib/python2.6/dist-packages/site-packages.pthを含むファイルを追加することです../site-packages

あるいは、使用するパッケージを教えることができますsite.getsitepackages()か?


1
おかげで、完璧に動作します:)(「../site
packages

1
インポートおよび変更sitecustomize.pysite.py試みるモジュールを作成することもできますsys.path
TestUser16418

5

あなた/etc/profile.d/local_python.shは内容で呼ばれる新しいファイルを作成するかもしれません

PYTHONPATH="/usr/local/lib/python2.6/site-packages/":"${PYTHONPATH}"
export PYTHONPATH

これPYTHONPATHにより、システムにログインしているすべてのユーザーに変数が設定されます。


7
これは本当に普遍的ではありません。/etc/profile.dメカニズムは、/ etc / profile.d(bash / ksh / zsh)を使用するシェルを持つユーザーのログインシェルでのみ機能します。cshユーザーにはこの変更が表示されないはずです。また、cron / atジョブでは無視されます。
リッチホモルカ

2
これはグローバル環境変数を設定する良い方法ですが(今日私が学んだ別のこと)、投稿で述べたように、私はもっとPython的な方法を探していました:)
ラタニウス

4

pythonのパス変更に関する私の調査結果を要約したいと思います。それを行うには2つの方法があります。

  • .pthファイル
  • PYTHONPATH

デフォルトパス(以下を参照)にあるすべての.pthファイルは、そのコンテンツをに含めsys.pathます。上記の.pthファイルの形式は単純です:1行に1つの(フォルダー)パス。驚いたことに、パスは絶対パスでも.pthファイルからの相対パスでもかまいません。

デフォルトのパスは、インタープリターが存在する<some-prefix>/lib/python<version>/site-packages場所<some-prefix>で、通常は/usr/です。

PYTHONPATHオペレーティングシステムの環境変数です。UNIXシステムでは、それらをリストしますenv。このような変数のグローバルな変更は、@ TestUser16418で言及されているフォルダー内の.shスクリプトを介して行われ/etc/profile.d/ます。


2
「_」のないPYTHONPATH
heroxbd

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.