我使用--no-site-packages
选项创建了一个virtualenv并安装了很多库。现在我想撤销--no-site-packages
选项并使用全局包。
是否可以在不重新创建virtualenv的情况下完成呢?
更具体地说:
我想知道使用--no-site-packages
选项创建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。您需要按照这个答案进行操作。
virtualenv/python2.7/no-global-site-packages.txt
文件。 - caesarsolvirtualenv/pyenv.cfg
文件。其中有一个选项用于 site-packages:
include-system-site-packages = false
更改该值并调用 Activate.ps1。 - georgikPython 3.4
版本的 Linux 版本的 venv
也适用。 - Tomasz Dzieniak至少对于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
前往您的 venv 文件夹并打开 pyvenv.cfg
文件。(例如,如果您的虚拟环境名为myenv
,则该文件将位于myenv\pyvenv.cfg
)
您会看到一个名为 include-system-site-packages
的布尔设置。
将该设置设置为 true
以使用全局包。
如果要禁用使用全局包,只需将该设置改为 false
。
使用 virtualenvwrapper 管理虚拟环境时,您可以使用 shell 函数 toggleglobalsitepackages
在使用和不使用 site packages 之间切换。
no-global-site-packages.txt
的存在作为标志时。新版使用pyvenv.cfg文件中的设置。看起来virtualenv_wrapper尚未更新以适应虚拟环境的此更改。 https://bitbucket.org/virtualenvwrapper/virtualenvwrapper/issues/345/toggleglobalsitepackages-command-seems. - Mads Skjern/virtualenv_root/lib/
和 /path/to/desired/site-packages/
之间添加符号链接。no-global-site-packages.txt
文件。 - Aaron Digulla其中'myvenv'是您虚拟环境的名称,而python3.8则是我的示例。在命令行中,您只需要执行以下操作:
$ python3 -m venv --system-site-packages myvenv