在virtualenv中,如何忽略单个包的no-site-packages
规则?
一些背景知识:我使用virtualenv进行部署,但由于我使用lxml
,因此需要花费更长的时间。每次重新安装新的virtualenv时,编译此过程最多需要15分钟。我可以为lxml
制作某种例外并使用全局网站包吗?有没有比将它复制到新的virtualenv更安全/更可靠的选择?
答案 0 :(得分: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时会更加脆弱。