既存のスクリプトを変更せずに、追加のsite-packages
ロケーションについてPython)を伝える方法はありますか?
CentOS 5.5サーバーには、/opt/python2.7.2
にインストールされているPython 2.7インストールがあり、site-packages
に/opt/python2.7.2/lib/python2.7/site-packages
フォルダーがあります。
この理由は、5.5ディストリビューションに同梱されている既存のPython 2.4インストールを邪魔したくなかったからです。
ただし、サードパーティPythonアプリケーションは、site-packages
フォルダーを/usr/local/lib/python2.7/site-packages
に追加し、その場所に自分自身をインストールしました。
これは、インストールする前にアプリケーションのPREFIX
のMakefile
を微調整しなかったためです。
私はこれができることを知っています:
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
これはうまくいくように見えますが、もっと良い方法があるのでしょうか?
サイト固有の構成フック を使用できます。
「パス構成ファイルは、名前が
name.pth
という形式で、上記の4つのディレクトリのいずれかに存在するファイルです。その内容は、sys.path
に追加される追加項目(1行に1つ)です。」
あなたの場合、含めるディレクトリのパスを含む.pth
ファイルをドロップするだけで、目的を達成できます。
[root@home]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth
python実行可能ファイルを、追加したインストールパスをPYTHONPATHに追加するラッパースクリプトで置き換えることができます。しかし、これは面倒です。
ただし、アドオンのインストールを修正して、site-packages dirに適切に配置するようにします。