我知道这个话题被反复讨论过,但是我在SO或其他地方没有找到解决问题的方法,所以我怀疑我的系统中可能存在bug。
我正在使用Python 3.4开发一个应用程序,该应用程序将在旧版RHEL 6平台上运行,并使用Qt。我已经通过yum安装了所有相关库(例如qt-devel,pyqt4-devel等),现在想要将我的应用程序包安装为“可编辑”包,使用pip install -e mypkg命令。我还有一些依赖要求,这些要求不在yum上,必须通过pip进行安装。
我想做的是创建一个虚拟环境,它“继承”了通过yum安装的系统包,但允许我将自己的包pip安装到我的主目录中的虚拟环境目录中。
从我的谷歌搜索结果来看,最好的方法是创建一个虚拟环境,其中包含系统的site-packages目录:
$ python3 -m venv --system-site-packages ~/venv
然而,当我尝试将包安装到此虚拟环境的site-packages目录时,它会尝试在/usr/lib下安装它,然后我会收到权限被拒绝的错误。
因此,似乎--system-site-packages选项使我的虚拟环境完全共享系统的site-packages目录,而不是将其用作“基础”,可以在其上添加更多的包。
这个答案链接指出使用pip install -I应该可以做到我想要的,但事实并非如此。
(venv) $ pip3 install -I bitstring
...
error: could not create '/usr/lib/python3.4/site-packages/bitstring.py': Permission denied
(venv)
来表示这一点。 - gpandersyum
或apt
安装的包即使在没有启用系统包的情况下也可以在虚拟环境中使用(当时让我感到非常惊讶)。至少应该进行测试。 - jpmc26>>> import sys; print(sys.path)
显示['', '/usr/lib64/python34.zip', '/usr/lib/python3.4', '/usr/lib64/python3.4/plat-linux', '/usr/lib64/python3.4/lib-dynload', '$HOME/venv/lib64/python3.4/site-packages', '$HOME/venv/lib/python3.4/site-packages']
,缺少/usr/lib64/python3.4/site-packages
。 - gpandersfrom PyQt4 import QtGui
。如果无法工作,那就算了,但我记得它可以(至少在某些情况下)。也许它被安装到了列表中的其他位置之一。 - jpmc26