我使用该--no-site-packages
选项创建了一个 virtualenv 并安装了许多库。现在我想恢复该--no-site-packages
选项并使用全局包。
我可以在不重新创建 virtualenv 的情况下做到这一点吗?
更确切地说:
我想知道在使用该选项而不是不使用该选项创建 virtualenv 时究竟会发生什么。--no-site-packages
如果我知道会发生什么,那么我可以弄清楚如何撤消它。
我使用该--no-site-packages
选项创建了一个 virtualenv 并安装了许多库。现在我想恢复该--no-site-packages
选项并使用全局包。
我可以在不重新创建 virtualenv 的情况下做到这一点吗?
更确切地说:
我想知道在使用该选项而不是不使用该选项创建 virtualenv 时究竟会发生什么。--no-site-packages
如果我知道会发生什么,那么我可以弄清楚如何撤消它。
尝试删除(或重命名)虚拟环境下文件夹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。你会想要遵循这个答案
至少对于 Python 3.5.2,pyvenv.cfg
virtualenv 目录的根目录中有文件。您需要做的就是将include-system-site-packages
标志从更改false
为true
:
home = /usr/bin
include-system-site-packages = false # <- change this to "true"
version = 3.5.2
转到您的 venv 文件夹并打开pyvenv.cfg
. (例如,如果您的虚拟环境被调用myenv
,那么文件将位于myenv\pyvenv.cfg
)
您会看到一个名为的布尔设置include-system-site-packages
将该设置设置true
为使用全局包
如果您想禁用使用全局包,只需将该设置设置为false
。
使用virtualenvwrapper管理 virtualenvs 时,可以使用 shell 功能toggleglobalsitepackages
在使用和不使用站点包之间切换。
尝试在/virtualenv_root/lib/
and之间添加符号链接/path/to/desired/site-packages/
其中 'myvenv' 是您的虚拟环境的名称,而 python3.8 和我的一样,例如,您在命令行中需要做的就是:
$ python3 -m venv --system-site-packages myvenv