我知道这个话题已经死了,但是我无法找到解决SO或其他地方问题的解决方案,所以我怀疑系统中可能存在错误。
我在使用Python 3.4的旧RHEL 6平台上。我正在开发一个将在使用Qt的平台上运行的应用程序。我已经通过yum
安装了所有相关的库(例如qt-devel
,pyqt4-devel
等),现在想使用{{1 }}。我也有一些不依赖pip install -e mypkg
的依赖项要求,必须通过yum
安装。
我想做的是创建一个virtualenv,它“继承”通过pip
安装的系统软件包,但允许我将自己的软件包yum
放入主目录中的virtualenv目录。
在我的Google搜索中,看来最好的方法是使用系统的站点软件包目录创建虚拟环境:
pip install
但是,当我尝试将软件包安装到此virtualenv的site-packages目录时,它尝试将其安装在$ python3 -m venv --system-site-packages ~/venv
下,并且出现/usr/lib
错误。
看来,Permission denied
选项使我的virtualenv完全共享了系统中的site-packages目录,而不是将其用作“基础”,在此基础上可以放置更多的软件包。
This answer指出,使用--system-site-packages
应该可以实现我想要的功能,但事实并非如此:
pip install -I
答案 0 :(得分:1)
创建没有--system-site-packages
开关的虚拟环境。创建环境后,转到创建环境的文件夹。该环境应具有文件pyvenv.cfg
。编辑此文件。它(除其他文字外)还有一行
include-system-site-packages = false
将此行更改为:
include-system-site-packages = true
激活环境。现在,模块安装将进入虚拟环境,并且系统站点包也可见。
答案 1 :(得分:1)
在Python 3.8中,似乎--system-site-packages
可以正常工作:
python3 -m venv --system-site-packages myProject
cat myProject/pyvenv.cfg
home = /usr/bin
include-system-site-packages = true
version = 3.8.5
安装astroid, isort, wrapt
后,我得到了:
pip list -v
Package Version Location Installer
---------------------- -------------------- ------------------------------------------------------- ---------
apturl 0.5.2 /usr/lib/python3/dist-packages
astroid 2.4.2 /home/to/no/MR/auto-gen/lib/python3.8/site-packages pip
isort 5.6.4 /home/to/no/MR/auto-gen/lib/python3.8/site-packages pip
jedi 0.15.2 /usr/lib/python3/dist-packages
keyring 18.0.1 /usr/lib/python3/dist-packages
wrapt 1.12.1 /home/to/no/MR/auto-gen/lib/python3.8/site-packages pip
已安装的“系统”软件包是从/usr/lib/python3/dist-packages
获取的,而本地(venv)已安装的软件包是从/home/to/no/MR/auto-gen/lib/python3.8/site-packages