【问题标题】:Revert the `--no-site-packages` option with virtualenv使用 virtualenv 恢复 `--no-site-packages` 选项
【发布时间】:2011-03-23 05:13:21
【问题描述】:

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

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

更准确地说:

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

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

【问题讨论】:

  • an other question 被标记为与这个重复,它收到的答案在这里也可能很有趣。

标签: python virtualenv


【解决方案1】:

尝试删除(或重命名)虚拟环境下 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。你需要关注this answer

【讨论】:

  • 就可以了。该文件的存在(或不存在)是 no-site-packages 标志的唯一直接影响。 Virtualenv 的自定义 site.py 查找该文件以决定是否将全局站点包目录添加到 sys.path。
  • 太棒了!做到了!非常感谢您的回答,并感谢 Carl Meyer 的补充评论。
  • 那是我的 ubuntu 服务器中的 virtualenv/python2.7/no-global-site-packages.txt
  • Windows 版本的 virtualenv 包含 virtualenv/pyenv.cfg 文件。站点包有一个选项:include-system-site-packages = false 更改此值并调用 Activate.ps1
  • 此文件似乎不再出现。请参阅stackoverflow.com/a/58513801/21539 以获取更新的答案
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

    • 赞成这个以获得更高的知名度。应该接受答案,因为大多数用户都在运行最新的 venv。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • +1 这适用于我的系统(openSUSE Linux 12.3、Python 2.7.3、virtualenv 1.8.4);我在任何地方都没有no-global-site-packages.txt
      【解决方案6】:

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

      $ python3 -m venv --system-site-packages myvenv
      

      【讨论】:

      • 问题是寻求“不重新创建 virtualenv”的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2012-02-11
      • 1970-01-01
      相关资源
      最近更新 更多