【问题标题】:System PIP instead of virtualenv PIP by default?默认情况下,系统 PIP 而不是 virtualenv PIP?
【发布时间】:2012-02-10 21:41:23
【问题描述】:

在 pip 断断续续地使用 virtualenv 几天后,我发现激活 virtualenv 后使用的 PIP 版本是全局 PIP,而不是相对于该环境的 PIP;这样,如果您不设置 shell 环境变量 export PIP_RESPECT_VIRTUALENV=true,pip 会将任何新软件包(例如 pip install argparse)安装到全局范围而不是仅安装到 virtualenv。

如果 virtualenv 被激活,我希望 PIP 默认安装到 virtualenv。

它背后有什么原因不是默认情况下是这样工作的吗?

请参阅here 的解释,了解PIP_RESPECT_VIRTUALENV 的工作原理。

【问题讨论】:

  • FWIW:我使用的 virtualenvs 有自己的 pip 副本,它安装在该 virtualenv 中。
  • @delnan 他们如何获得自己的 pip 副本?
  • virtualenv 的最新版本(1.4 及更高版本)应自动安装每个 env 的 pip 副本。你用的是什么版本的 virtualenv?

标签: python virtualenv pip


【解决方案1】:

这不是我第一次看到有人报告同样的问题。我不知道发生了什么,但有些人不鼓励使用 o source /path/to/venv/bin/activate,因为它会弄乱你的 $PATH

有一种方式 pip 将始终尊重您的 virtualenv:不要依赖 $PATH。使用:

/path/to/venv/bin/pip install MYPACKAGE

很高兴了解您的情况并与他人分享您的解决方案。同时,使用pip的绝对路径也可以。

【讨论】:

    【解决方案2】:

    当您创建 virtualenv 时,activate 文件将变量 VIRTUAL_ENV 硬编码 到您首次创建根目录的位置。然后在您source <your-venv>/bin/activate 时导出此变量。

    因此,如果您在创建 virtualenv 目录之后移动它,硬编码的文件路径将不正确。

    只需在文本编辑器中打开 <your-venv>/bin/activate 并确保将 VIRTUAL_ENV 设置为您的 virtualenv 目录的新路径:

    VIRTUAL_ENV="/Full/path/to/<your-venv>"
    export VIRTUAL_ENV
    

    在再次运行 source &lt;your-venv&gt;/bin/activate 之前。

    那么你当然可以用which pip 测试pip 的版本,应该会产生:

    /Full/path/to/<your-venv>/bin/pip
    

    而不是/usr/bin/pip/bin/pip 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 2017-08-17
      • 2015-08-16
      • 1970-01-01
      • 2021-08-11
      • 2012-04-05
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多