it-swarm-ja.tech

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

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バイナリに組み込まれているデフォルトではありません。

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

33
Latanius

サイトモジュールのドキュメントPythonの検索パスの変更 が探しているようです。

私が理解している限り、これらのエントリは_sys.path_に次のように追加されています。

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

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

または、site.getsitepackages()を使用するようにパッケージを教えることもできますか?

28
Mikel

/etc/profile.d/local_python.shという名前の新しいファイルを作成して、

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

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

6
TestUser16418

Pythonのパスの変更に関する私の調査結果をまとめたいと思います。それには2つの方法があります。

  • 。pthファイル
  • PYTHONPATH

Any。pthファイルがデフォルトのパス(以下を参照)にある場合、その内容はsys.pathに含まれます。上記の。pthファイルの形式は単純です。1行に1つの(フォルダー)パスがあります。驚いたことに、パスは。pthファイルに対して絶対パスまたは相対パスにすることができます。

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

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

4
katomaso

たとえば、.Eggファイルとして利用できるsudsモジュールをインポートする場合は、次のようにします。

Egg_path = '/home/shahid/suds_2.4.Egg'

sys.path.append(Egg_path)

import suds
# ... rest of code