通常我会选择使用--no-site-packages
选项创建虚拟环境,以获得更多的隔离性,同时也因为默认的Python全局包含了相当多的包,通常大部分都是不需要的。
然而我仍然希望保留一些特定的全局包,例如PIL
或者psycopg2
。有没有一种好的方法将它们包含在virtualenv
中,并且可以轻松自动化?
通常我会选择使用--no-site-packages
选项创建虚拟环境,以获得更多的隔离性,同时也因为默认的Python全局包含了相当多的包,通常大部分都是不需要的。
然而我仍然希望保留一些特定的全局包,例如PIL
或者psycopg2
。有没有一种好的方法将它们包含在virtualenv
中,并且可以轻松自动化?
如果你正在使用virtualenvwrapper,那么你可能可以使用postmkvirtualenv脚本来自动在新的虚拟环境sitepackages目录中创建符号链接。
#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
如果你正在使用 virtualenvwrapper,那么 shell 命令 add2virtualenv
应该存在于一个激活的虚拟环境中。请使用以下命令:
add2virtualenv /path/to/package
要将条目添加到虚拟环境site-packages中的PTH文件_virtualenv_path_extensions.pth
,可以使用add2virtualenv。与自己创建符号链接相比,使用add2virtualenv的好处是,您可以通过在PTH文件中注释掉其行来防止导入该包。这使得更容易检查代码针对其依赖的多个库的几个版本的有效性。