繁体   English   中英

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

[英]Including global package into a virtualenv that has been created with --no-site-packages

我通常更喜欢使用--no-site-packages选项创建 virtualenvs 以获得更多隔离,并且还因为默认的 python 全局包包含相当多的包,通常大多数都不需要。 但是,我仍然希望在全局范围内保留一些选择的软件包,例如PILpsycopg2 有没有一种好方法可以将它们包含到virtualenv ,也可以轻松实现自动化?

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

#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv

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

add2virtualenv /path/to/package

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM