2

在 virtualenv 中,如何忽略no-site-packages单个包的规则?

一些背景知识:我使用 virtualenv 进行部署,但自从我使用lxml. 每次我为新的 virtualenv 重新安装时,编译它最多需要 15 分钟。lxml我可以为全局站点包做某种例外并使用它吗?除了将其复制到新的 virtualenv 中之外,还有什么更安全/更可靠的选择吗?

4

1 回答 1

5

简短的回答:不,但你可以做其他事情来解决同样的问题。

--no-site-packages选项(现在是默认选项,除非您指定--system-site-packages)控制是否将某些目录添加到sys.path. 一个给定的目录要么在要么不在,你不能只区分该目录中的一个包。

但是,您可以在虚拟环境的site-packages目录中创建指向包的符号链接。在我的系统上:

ln -s /usr/lib/python2.7/site-packages/lxml ./env/lib/python2.7/site-packages

或更一般地说(使用系统的python,而不是环境的):

ln -s $(python -c 'import lxml, os.path; print(os.path.dirname(lxml.__file__)') ./env/lib/python2.7/site-packages

如果您使用的系统不支持符号链接,则复制也应该可以工作,但在更新系统范围的 lxml 时会更加脆弱。

于 2012-12-05T08:56:24.747 回答