129

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

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

更确切地说:

我想知道在使用该选项而不是不使用该选项创建 virtualenv 时究竟会发生什么。--no-site-packages

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

4

6 回答 6

164

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

其中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。你会想要遵循这个答案

于 2010-07-30T18:54:30.653 回答
24

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

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2
于 2016-12-05T11:00:07.437 回答
14

转到您的 venv 文件夹并打开pyvenv.cfg. (例如,如果您的虚拟环境被调用myenv,那么文件将位于myenv\pyvenv.cfg

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

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

如果您想禁用使用全局包,只需将该设置设置为false

于 2019-10-23T00:11:11.517 回答
12

使用virtualenvwrapper管理 virtualenvs 时,可以使用 shell 功能toggleglobalsitepackages在使用和不使用站点包之间切换。

于 2015-10-29T10:00:28.280 回答
2

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

于 2010-07-30T13:02:31.130 回答
-1

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

$ python3 -m venv --system-site-packages myvenv
于 2021-09-27T07:24:27.160 回答