web-dev-qa-db-ja.com

サイトパッケージに追加の場所を使用するためのPythonの設定

既存のスクリプトを変更せずに、追加の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に追加し、その場所に自分自身をインストールしました。

これは、インストールする前にアプリケーションのPREFIXMakefileを微調整しなかったためです。

私はこれができることを知っています:

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

これはうまくいくように見えますが、もっと良い方法があるのでしょうか?

27
Kev

サイト固有の構成フック を使用できます。

「パス構成ファイルは、名前が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
42
Shawn Chin

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

ただし、アドオンのインストールを修正して、site-packages dirに適切に配置するようにします。

4
cfi