7

我想使用 virtualenv 的默认(无站点包)。

但是有些模块很难在 virtualenv 中安装(例如 gtk)。对于“困难”,我的意思是你需要安装很多 c-header 文件并且需要编译很多东西。

我知道我可以通过不使用 pip 安装这些包来解决这个问题,而是创建符号链接以使一些模块可以从全局站点包目录中使用。

但这是正确的方向吗?

有没有办法用 pip 或 virtualenv 创建符号链接?

更新

在 2013 年,我想要一些模块,如 psycopg2、gtk、python-ldap 等,它们通过 virtualenv 中的 rpm/dpkg 安装在我的 linux 服务器上。

符号链接或其他变通办法确实使事情变得更复杂,而不是更简单。我们今天使用此选项(2017 年)

--系统站点包

授予对全局站点包的虚拟环境访问权限。

4

2 回答 2

0

我会说是的,这是正确的方向。

您的问题听起来类似于我处理的问题:将 OpenCV 安装到 virtualenv 中。我的问题是 OpenCV 无法通过 pip (Python 包索引)获得。我最终做的是查询相关模块的系统范围的全局 Python 安装,然后将 .so 复制到我的 virtualenv 中。

整个过程,包括我使用的样板 Makefile,都在这里捕获: https ://stackoverflow.com/a/19213369/1510289

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

希望这可以帮助...

于 2013-12-14T18:57:32.783 回答
0

您如何从头开始编译每个“硬”包?你在做类似的事情:

python setup.py install

如果是这样,请将其替换为:

python setup.py bdist_wheel

然后在./dist目录中查找.whl文件。然后获取该文件的任何内容,然后执行(激活环境后)

pip install `./dist/whateverTheFileIsCalled.whl`
于 2017-05-23T03:49:11.087 回答