繁体   English   中英

使用 virtualenv 恢复 `--no-site-packages` 选项

[英]Revert the `--no-site-packages` option with virtualenv

我使用--no-site-packages选项创建了一个 virtualenv 并安装了许多库。 现在我想恢复--no-site-packages选项并使用全局包。

我可以在不重新创建 virtualenv 的情况下这样做吗?

更确切地说:

我想知道使用--no-site-packages选项而不是不使用该选项创建 virtualenv 时到底发生了什么。

如果我知道会发生什么,那么我就能弄清楚如何撤消它。

尝试删除(或重命名)虚拟环境下Lib文件夹中的文件no-global-site-packages.txt

其中venv是您的虚拟环境的名称,而python3.4对应于所涉及的任何python版本,例如:

$ rm venv/lib/python3.4/no-global-site-packages.txt

如果您改变主意并想放回原处:

$ touch venv/lib/python3.4/no-global-site-packages.txt

注意:如果看不到上述文件,则您有较新版本的virtualenv。 您将改为遵循此答案

至少对于Python 3.5.2,在virtualenv目录的根目录中有pyvenv.cfg文件。 您需要做的就是将include-system-site-packages标志从false更改为true

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2

使用virtualenvwrapper管理virtualenv时,可以使用shell函数toggleglobalsitepackages在使用和不使用站点包之间进行切换。

尝试在/virtualenv_root/lib//path/to/desired/site-packages/之间添加符号链接

转到venv文件夹,然后打开pyvenv.cfg (例如,如果您的虚拟环境称为myenv则该文件将位于myenv\\pyvenv.cfg

您会看到一个名为include-system-site-packages的布尔设置

将该设置设置为true以使用全局包

如果要禁用使用全局软件包,只需将该设置设置为false

其中'myvenv'是您的虚拟环境的名称,而python3.8,例如我的,您需要在命令行中做的就是:

$ python3 -m venv --system-site-packages myvenv

暂无
暂无

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

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