我通常更喜欢使用--no-site-packages选项创建virtualenvs以获得更多隔离,并且因为默认的python全局包包含相当多的包,并且通常不需要大多数包。 但是我仍然希望在全局中保留一些选择包,比如PIL或psycopg2。是否有一种很好的方法将它们包含在virtualenv中,也可以轻松实现自动化?
答案 0 :(得分:11)
如果您正在使用virtualenvwrapper,则可以使用postmkvirtualenv脚本在新的virtualenv sitepackages目录中自动创建符号链接。
#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
答案 1 :(得分:8)
如果您使用virtualenvwrapper,则shell命令add2virtualenv
应存在于活动的virtualenv中。使用:
add2virtualenv /path/to/package
在virtualenv网站包中向PTH文件_virtualenv_path_extensions.pth
添加条目。
使用add2virtualenv而不是自己创建符号链接的好处是,您可以通过在PTH文件中注释掉它的行来删除可导入的包。这样可以更轻松地检查代码对其所依赖的库的多个版本的有效性。
答案 2 :(得分:0)
我还没有尝试使用这些特定的软件包,但我猜想从全局网站包中的一个简单的符号链接到virtualenv的网站包可能会有效,而且这很容易编写脚本。