由于各种原因,我需要在默认位置之外的某处安装python模块。 pip install --prefix
似乎是正确的,但我遇到了问题:
$ 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 :(得分:1)
使用:
alertController.view.accessibilityViewIsModal = true
pip install --ignore-installed --install-option="--prefix=$PREFIX_PATH" package_name
是强制使用此新前缀重新安装所有依赖项。这看起来是你遇到的问题。您可以多次使用--ignore-installed
添加可以与--install-option
的python setup.py一起使用的任何选项。
我不确定你为什么要这条道路不同。您应该初始化虚拟环境以使您的模块项目保持特定而不是废话。但是,如果您的用例需要这些废话,请执行以上操作。
答案 1 :(得分:1)
最适合您的解决方案是使用“virtualenv”。您可以安装必需的软件包,其范围仅限于虚拟环境。此外,它将忽略主存储库中已存在的所有先前安装的软件包。要快速入门,请点击以下链接:http://docs.python-guide.org/en/latest/dev/virtualenvs/