2011-10-26 10 views
23

のための追加の場所を使用する既存のスクリプトを修正することなく、追加site-packages場所についてはPythonを伝える方法はありますか?設定のPythonのsite-packages

私のCentOS 5.5サーバーには、/opt/python2.7.2にインストールされているPython 2.7のインストールがあり、というフォルダが/opt/python2.7.2/lib/python2.7/site-packagesにあります。

この理由は、5.5ディストリビューションに同梱されている既存のPython 2.4のインストールを妨げたくないからです。

しかし、サードパーティのPythonアプリケーションでも、にsite-packagesというフォルダが追加され、その場所にインストールされました。

インストール前にのPREFIXを調整していないため、これは部分的に私のせいですが、今はそれほど多くはありません。

は、私はこれを行うことができることを知っている:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") 

は、しかし、それは私がすべてのスクリプトを追跡し、将来的にアップデートがあるべき理想的ではないとする上記の追加伴うだろう。私は、このサードパーティのアプリケーションの場所に/opt/python2.7.2/lib/python2.7/site-packagesにシンボリックリンクを作成し、この問題を回避するには

 
ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp 

は、これが正常に動作するように見えるが、良い方法があります場合、私は思ったんだけど?

答えて

36

あなたはSite-specific configuration hookを使用することができます。

「パス設定ファイルは名前形式name.pthを有し、上記4つのディレクトリのいずれかに存在するファイルであり、その内容はsys.pathに追加される追加項目(1行につき1つ)です。」

お使いの場合には

、あなたは単純に含まれるようにディレクトリのパスを含む.pthファイルにドロップすることにより、あなたが望むものを達成することができるはずです。

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth 
+0

これは御馳走に動作しますが、しかし、私は弾丸をビットすることを決定し、展開を修正します。しかし、とにかくおかげさまで、将来を知るのに便利です。 – Kev

+2

これは、Pythonパスの*エンド*へのパスを追加します。カスタムサイトパッケージが最初に来るようにしたいのですが?私はいくつかの成功とsitecustomize.pyファイルを試してきましたが、単純にpythonのパスを操作するだけでは不十分な場合があるようです。 – wryfi

2

はあなたがでPythonの実行可能ファイルを置き換えることができますPYTHONPATHに追加したINSTALLPATHを追加ラッパースクリプト。しかし、これはクルージングです。

しかし、アドオンのインストールを修正して、サイトパッケージのディレクトリに適切に入るようにしたいと思います。

+0

ショーンの答えは、トリックをしましたが、あなたは、インストール、実際に長期的に優れている固定点で右にもね。 – Kev

関連する問題