使一些全局的site-packages模块在virtualenv中可用

8
我想使用virtualenv的默认设置(不包括任何站点包)。但是,在virtualenv中安装某些模块可能比较困难(例如gtk)。这里所说的“困难”指需要安装许多c头文件和编译大量内容。
我知道我的问题可以通过不使用pip安装这些包,而是创建符号链接来使一些模块从全局site-packages目录中可用。但这是正确的做法吗?
有没有一种方法可以使用pip或virtualenv来创建符号链接?
更新: 在2013年,我想要一些模块,如psycopg2、gtk、python-ldap等,它们被安装在我的Linux服务器上,通过rpm/dpkg在virtualenv中运行。 符号链接或其他解决方法使事情变得更加复杂,而不是更简单。我们今天(2017)使用此选项:
--system-site-packages 给虚拟环境访问全局site-packages的权限。

“难以在虚拟环境中安装”是什么意思,这里的“难”指的是什么?符号链接是可以的,可以参考https://dev59.com/nHE85IYBdhLWcg3wdDOz#3399920进行自动化处理。 - alko
@alko 谢谢您的提问。我更新了问题:这很困难,因为您需要许多C头文件,并且如果您使用pip安装(例如gtk或matplotlib等软件包),则需要编译很多内容。 - guettli
2个回答

0

我认为是的,那是正确的方向。

你的问题听起来与我处理过的某些事情相似:将OpenCV安装到virtualenv中。我的问题是OpenCV无法通过pip(Python包索引)获得。我最终做的是查询系统范围内的全局Python安装程序以获取相关模块,然后将.so复制到我的virtualenv中。

整个过程,包括我使用的样板Makefile,在这里都有记录:https://dev59.com/AGYr5IYBdhLWcg3w6OGd#19213369

你可以通过符号链接而不是复制来做类似的事情。我最终复制库的原因是因为我使用Make,而Make不能以我需要的方式处理符号链接的依赖关系(如上面的URL所述)。

希望这能帮到你...


0
你是如何从头开始编译这些“难”包的呢? 你是像这样做的吗:
python setup.py install

如果是这样,请用以下内容替换:
python setup.py bdist_wheel

然后在./dist目录中查找一个.whl文件。然后取出该文件,在激活环境后执行以下操作:

pip install `./dist/whateverTheFileIsCalled.whl`

我更新了问题。我们想要在虚拟环境中安装rpm/dpkg的Python库。 - guettli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接