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

问题描述 投票:0回答:1

我知道这个话题已被打败,但我无法找到我在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

但是,当我尝试将软件包安装到这个virtualenv的site-packages目录时,它会尝试在/usr/lib下安装它,并且我得到一个Permission denied错误。

所以看起来--system-site-packages选项使我的virtualenv完全从我的系统共享site-packages目录,而不是将它用作“基础”,其中可以在顶层分层。

This answer说使用pip install -I应该做我想要的,但事实似乎并非如此:

(venv) $ pip3 install -I bitstring
...
error: could not create '/usr/lib/python3.4/site-packages/bitstring.py': Permission denied
python pip virtualenv
1个回答
1
投票

在没有--system-site-packages开关的情况下创建虚拟环境。创建环境后,转到创建环境的文件夹。它应该有一个文件pyvenv.cfg。编辑此文件。它(以及其他文本)一行

include-system-site-packages = false

将此行更改为:

include-system-site-packages = true

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

© www.soinside.com 2019 - 2024. All rights reserved.