16

我通常更喜欢创建带有--no-site-packages更多隔离选项的 virtualenvs,而且因为默认的 python 全局包包含相当多的包,通常它们中的大多数是不需要的。但是我仍然想在全局中保留一些选择的包,比如PILor psycopg2。有没有一种好方法可以将它们包含在 中virtualenv,也可以轻松实现自动化?

4

3 回答 3

12

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

#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
于 2010-08-03T19:08:13.123 回答
9

如果您使用的是virtualenvwrapper,则 shell 命令add2virtualenv应该存在于活动的 virtualenv 中。利用:

add2virtualenv /path/to/package

_virtualenv_path_extensions.pth在您的 virtualenv 站点包中的 PTH 文件中添加一个条目。

使用 add2virtualenv 而不是自己创建符号链接的好处是,您可以通过在 PTH 文件中注释掉它的行来删除包的可导入性。这使得根据它所依赖的库的多个版本检查代码的有效性变得更加容易。

于 2013-04-25T14:28:40.533 回答
1

我实际上并没有用那些特定的包尝试过这个,但我猜想从全局站点包到 virtualenv 的站点包的简单符号链接可能会起作用,而且这很容易编写脚本。

于 2010-05-07T07:05:34.027 回答