撤销虚拟环境中的 `--no-site-packages` 选项

130 投票
6 回答
25005 浏览
提问于 2025-04-16 02:03

我创建了一个虚拟环境,使用了 --no-site-packages 这个选项,并安装了很多库。现在我想取消这个 --no-site-packages 选项,想要使用全局的包。

我能在不重新创建虚拟环境的情况下做到这一点吗?

更具体一点:

我想知道,当我创建虚拟环境时,如果使用 --no-site-packages 这个选项,和不使用这个选项,具体会发生什么。

如果我知道发生了什么,我就能想办法撤销它。

6 个回答

23

去你的虚拟环境文件夹,打开 pyvenv.cfg 文件。(比如,如果你的虚拟环境叫 myenv,那么这个文件就在 myenv\pyvenv.cfg 这个位置)

你会看到一个叫 include-system-site-packages 的设置项,它是一个布尔值。

把这个设置改成 true,这样就可以使用全局的包了。

如果你想禁用全局包的使用,只需把这个设置改成 false 就可以了。

35

对于Python 3.5.2版本来说,在虚拟环境的目录下会有一个叫做 pyvenv.cfg 的文件。你只需要把里面的 include-system-site-packages 这个选项从 false 改成 true 就可以了:

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

试着删除(或者重命名)你虚拟环境中的 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。你需要参考 这个回答

撰写回答