2017-08-08 9 views
0

さまざまな理由から、デフォルトの場所の外のどこかにPythonモジュールをインストールする必要があります。 pip install --prefixは正しいことのように思えるだろうが、私は問題を抱えている:pipインストールされたモジュールと代替パス

$ pip install --prefix /tmp/foo protobuf-3.2.0-cp27-cp27mu-manylinux1_x86_64.whl 
$ export PYTHONPATH=/tmp/foo/lib64/python2.7/site-packages 
$ python 
Python 2.7.5 (default, Nov 6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import google.protobuf 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named google.protobuf 
>>> import sys 
>>> sys.path.append('/tmp/foo/lib64/python2.7/site-packages') 
>>> sys.path 
['', '/tmp/foo/lib64/python2.7/site-packages', '/usr/lib64/python27.zip', 
'/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', 
'/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', 
'/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', 
'/usr/lib/python2.7/site-packages', '/tmp/foo/lib64/python2.7/site-packages'] 
>>> import google.protobuf 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named google.protobuf 

しかし、私は(私は生産に行うことはできません)デフォルトの場所にインストールする場合:

$ sudo pip install protobuf-3.2.0-cp27-cp27mu-manylinux1_x86_64.whl 
$ python 
Python 2.7.5 (default, Nov 6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import google.protobuf 
>>> google.protobuf.__version__ 
'3.2.0' 

私は私を想定しますpipコマンドの呼び出しが間違っているか、実行時にそのモジュールを取得するために何か必要なことがあります。アドバイスをいただければ幸いです。

+0

virtual env。 python –

答えて

1

"virtualenv"を使用するのが最適です。スコープが仮想環境のみに限定される必要なパッケージをインストールできます。また、すでにメインリポジトリに入っている、以前にインストールされたパッケージはすべて無視されます。クイックスタートの場合は、次のリンクをクリックしてください。http://docs.python-guide.org/en/latest/dev/virtualenvs/

+0

これは私が必要なものです。ありがとうございました。 –

+0

ようこそ。 :) –

1

用途:

pip install --ignore-installed --install-option="--prefix=$PREFIX_PATH" package_name 

--ignore-installedは、この新しい接頭辞を使用して再インストールするすべての依存関係を強制することです。これはあなたが抱えている問題だと思われます。 --install-optionを複数回使用して、python setup.py installで使用できるオプションを--prefixで追加できます。

なぜこのパスが異なるかわかりません。おそらく仮想環境を初期化して、このナンセンスの代わりにモジュールプロジェクトを特定の状態に保つ必要があります。しかし、このナンセンスがあなたのユースケースに必要な場合は、上記を行います。

関連する問題