我使用 --no-site-packages选项创建了一个 Virtual alenv,并安装了许多库。现在我想恢复 --no-site-packages选项并使用全局包。
--no-site-packages
我能在不重建虚拟世界的情况下做到吗?
更准确地说:
我想知道当使用 --no-site-packages选项而不是不使用该选项来创建一个 viralenv 时,没错会发生什么。
如果我知道会发生什么,我就能想办法解除它。
尝试在 /virtualenv_root/lib/和 /path/to/desired/site-packages/之间添加一个符号链接
/virtualenv_root/lib/
/path/to/desired/site-packages/
尝试在虚拟环境下删除(或重命名) Lib文件夹中的文件 no-global-site-packages.txt。
Lib
no-global-site-packages.txt
其中,来吧是虚拟环境的名称,而 Python 3.4对应于所涉及的 Python 的任何版本,例如:
$ rm venv/lib/python3.4/no-global-site-packages.txt
如果你改变主意,想把它放回去:
$ touch venv/lib/python3.4/no-global-site-packages.txt
注意: 如果您没有看到上面的文件,那么您有一个更新版本的 viralenv。你会想要遵循 这个答案而不是
当使用 虚拟包装器管理 viralenv 时,可以使用 shell 函数 toggleglobalsitepackages在使用和不使用站点包之间进行切换。
toggleglobalsitepackages
至少对于 Python 3.5.2,viralenv 目录的根目录中有 pyvenv.cfg文件。你所需要做的就是将 include-system-site-packages的标志从 false改为 true:
pyvenv.cfg
include-system-site-packages
false
true
home = /usr/bin include-system-site-packages = false # <- change this to "true" version = 3.5.2
打开你的文件夹,打开 pyvenv.cfg。(例如,如果您的虚拟环境被称为 myenv,那么文件将位于 myenv\pyvenv.cfg)
myenv
myenv\pyvenv.cfg
您将看到一个名为 include-system-site-packages的布尔设置
将该设置设置为 true以使用全局包
如果要禁用使用全局包,只需将该设置设置为 false即可。
其中‘ myvenv’是您的虚拟环境的名称,而 python3.8与我的一样,在命令行中只需要:
$ python3 -m venv --system-site-packages myvenv