将全局包包含在使用--no-site-packages创建的virtualenv中

Bot*_*res 16 python pip virtualenv easy-install

我通常更喜欢使用--no-site-packages选项创建virtualenvs以获得更多隔离,并且因为默认的python全局包包含相当多的包,并且通常不需要大多数包.但是我仍然希望在全局中保留一些选择包,比如PIL或psycopg2.是否有一种很好的方法将它们包含在virtualenv中,也可以轻松实现自动化?

mob*_*ley 11

如果您正在使用virtualenvwrapper,并且您可以使用postmkvirtualenv脚本在新的virtualenv sitepackages目录中自动创建符号链接.

#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
Run Code Online (Sandbox Code Playgroud)


pcu*_*rry 8

如果您使用的是virtualenvwrapper,那么shell命令add2virtualenv应该存在于活动的virtualenv中.使用:

add2virtualenv /path/to/package
Run Code Online (Sandbox Code Playgroud)

_virtualenv_path_extensions.pth在virtualenv站点包中向PTH文件添加条目.

使用add2virtualenv而不是自己创建符号链接的好处是,您可以通过在PTH文件中注释掉它的行来删除可导入的包.这样可以更轻松地检查代码对其所依赖的库的多个版本的有效性.