2011-06-28 17 views
19

私はルートアクセス権を持たない大きなサーバでpythonを使う必要があります。私はマシン上にグローバルにインストールされているものより新しいバージョンのnumpyを使用したいと思います。 virtualenvは、この目的のために正確に設計されており、私は自分の仮想環境を作成し、以下のコマンドでそれをアクティブにしますvirtualenvにグローバルライブラリよりローカルライブラリを優先させるにはどうすればいいですか

virtualenv my_personal_python 
source my_personal_python/bin/activate 

が、私はその後、私は

pip install numpy==1.6.0 
を使用することに興味があるライブラリの新しいバージョンをインストールします

問題は、今はnumpyをインポートすると、仮想環境のmy_personal_python/lib/python2.6/site-packacgesディレクトリにインストールされているものではなく、古いグローバルバージョンがインポートされることです。

のように私は、すでに--no-のsite-packagesフラグ一つの可能​​な解決策を承知しています:私は、このフラグを使用すると、私が望むよう、インポートの動作

virtualenv --no-site-packages my_personal_python 

。しかし、私はローカルですべてのパッケージを再インストールしたくないので、このフラグを使用したくありません。

(私はのpython 2.6、virtualenvの1.6.1を使用していて、私のマシンでPYTHONPATH変数が設定されていない。)

更新私は仮想環境からのsite-packagesディレクトリを追加する場合でも、 Pythonのパスの先頭にあるnumpyは、この場所からインポートされません(他のパッケージはこの場所からインポートされます)。たぶん、この問題はnumpyに固有の問題であり、一般的なパッケージでは発生しません。

+0

AFAIK、期待通りに動作するはずです。おそらく、そのコンピュータにおそらくインストールされている古いバージョンのvirtualenvのバグかもしれません... –

+0

これが問題であるかどうかは分かりませんが、pipはアクティブ化された仮想環境を使用することを知っていますか? numpy 1.6.0がグローバルサイトパッケージにインストールされていることを確認してください。 – mklauber

+0

pipは仮想環境の使い方を知っており、バージョン1.6.0を仮想環境のsite-packagesディレクトリに正しくインストールしました。 numpyのグローバルバージョンは1.4.0です。 – conradlee

答えて

7

いくつかをダブルチェックしてください。

which python

which pip

今、あなたは右のいずれかを実行していることを確認していること、のpythonを起動して:その後

import sys 
print "\n".join(sys.path) 

echo $PYTHONPATH 続い終了のpythonとタイプecho $PATH私はと思われます問題が表示され、PYTHONPATHを設定して修正できない場合は、でこれを行う可能性がありますモジュール。

3

これは私のために働いた。

私のwhich pythonwhich pipは正確には正しくありましたが、sys.pathは間違っていました。私のvirtualenvは~/virtualenvs/envyです。もともと私はやっていた:

しかし、これはまだ私のvirtualenvの代わりにシステム全体のパッケージをインポートしていた。しかし、私はthis PyCon talk on virtualenvを見て、試してみることにした。

export PYTHONPATH=~/virtualenvs/envy/lib/python2.7:$PYTHONPATH 

2番目のオプションでsite-packagesの欠如に注意してください。そして、これは実際に働いた!私はそれが他の人を助けることを望む。

1

私の~/.local/lib/python2.7/site-packages/easy-install.pthには、/usr/lib/python2.7/dist-packagesのような(IMHO不要な)行がありました(少なくとも助けました)。これらの行を削除すると、easy_installがまだ見知らぬものをやっていた古い時代から残されているかもしれません。

関連する問題