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

Gre*_*ers 8 python pip virtualenv

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

我在使用 Python 3.4 的较旧的 RHEL 6 平台上。我正在开发一个将在使用 Qt 的平台上运行的应用程序。我已经通过yum(例如qt-develpyqt4-devel等)安装了所有相关的库,现在想使用pip install -e mypkg. 我也有几个依赖项要求没有打开yum,必须通过pip.

我想要做的是创建一个 virtualenv,它“继承”通过安装的系统包,yum但允许我将pip install自己的包放入我的主目录中的 virtualenv 目录中。

从我的谷歌搜索来看,最好的方法是使用系统的站点包目录创建一个虚拟环境:

$ python3 -m venv --system-site-packages ~/venv
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将软件包安装到此 virtualenv 的 site-packages 目录时,它会尝试将其安装到该目录下,但/usr/lib出现Permission denied错误。

因此,该--system-site-packages选项似乎使我的 virtualenv 完全共享了我系统中的 site-packages 目录,而不是将其用作“基础”,其中可以在顶部分层放置更多的包。

这个答案指出 usingpip install -I应该做我想要的,但情况似乎并非如此:

(venv) $ pip3 install -I bitstring
...
error: could not create '/usr/lib/python3.4/site-packages/bitstring.py': Permission denied
Run Code Online (Sandbox Code Playgroud)

rfi*_*eis 7

创建没有--system-site-packages交换机的虚拟环境。创建环境后,转到创建环境的文件夹。它应该有一个文件pyvenv.cfg. 编辑此文件。它有(在其他文本中)一行

include-system-site-packages = false
Run Code Online (Sandbox Code Playgroud)

将此行更改为:

include-system-site-packages = true
Run Code Online (Sandbox Code Playgroud)

激活环境。模块安装现在将进入虚拟环境,并且系统站点包也可见。