2011-12-27 12 views
2

私はAutotools(./configure、make、make install)のCのバックグラウンドから来ましたが、最近Pythonを使い始めました。私は、オートツールを使って、./configure --prefix=/foo/barを実行することで、システムのどこにでもプログラムをインストールできます。私はほとんどのPythonプログラムがdistutilsに基づいた同様のシステムを、通常はsetup.pyというファイルで使用していることがわかりました。しかし、python setup.py install --prefix /foo/barなどの非標準ディレクトリにプロジェクトをインストールすると、/foo/bar/binのスクリプトは/foo/bar/lib/pythonx.y/site-packagesにインストールされているパッケージを取得できなくなることに気付きました。カスタムプレフィックスでインストールされたときにsys.pathにlibディレクトリを追加する方法

何とかスクリプトを実行すると、そのディレクトリをsys.pathに追加する必要があるとします。どのように私はそれを安定したクロスプラットフォームのやり方で行うのですか?それとも私は別のことをしなければならないのですか

答えて

1

カスタムインストールディレクトリは「foo」という場合には、あなたのpython-ルートは、「バー」で、あなたのパッケージルートはあなたのスクリプトにこれを加えるかもしれない 「LIB」である:あなたの例では

import sys 
from os.path import join 
foo = "foo" 
bar = "bar" 
lib = "lib" 
newbase = join(foo, bar, lib) 
sys.path.append(newbase) 

を:

foo ='foo' 
bar = 'bar' 
lib = '/lib/pythonx.y/site-packages' 
+0

ありがとうございますが、私は問題を解決するとは思わない。私は、プログラムがインストールされる場所を事前に知っていません。ファイルシステムのどこにでも置くことができます。私は、相対パスを使用し、x.yがPythonのインストールされているバージョンによって異なることを考慮に入れなければならないでしょう。 –

+0

あなたがdistutilsを使用していて、手を汚すことを恐れていない場合は、setupスクリプトをカスタマイズしようとするかもしれません。役に立つかもしれないdoc-sectionは次のとおりです:http://docs.python.org/distutils/apiref.html#module-distutils.sysconfig –

+0

また、町の新しい保安官がピピであるように見えることに注意してください:http: //pypi.python.org/pypi/pip –

0

もう1つの共通のツールは、システム全体ではない別のpythonリポジトリを作成するためにvirtualenvを使用して、パッケージをその中にインストールすることです。

>> pip install virtualenv 
>> virtualenv --distutils test_env 
>> source ./test_env/bin/activate 
>> cd <your package> 
>> python setup.py install 
関連する問題