使用Python virtualenv安装本地软件包--system-site-packages

时间:2019-04-09 19:39:03

标签: python pip virtualenv

我知道这个话题已经死了,但是我无法找到解决SO或其他地方问题的解决方案,所以我怀疑系统中可能存在错误。

我在使用Python 3.4的旧RHEL 6平台上。我正在开发一个将在使用Qt的平台上运行的应用程序。我已经通过yum安装了所有相关的库(例如qt-develpyqt4-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

2 个答案:

答案 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

提取的