默认情况下是系统 PIP 而不是 virtualenv PIP?

bit*_*cle 5 python pip virtualenv

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

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

默认情况下它不以这种方式工作是否有原因?

有关工作原理,请参阅此处的说明PIP_RESPECT_VIRTUALENV

Hug*_*res 4

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

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

/path/to/venv/bin/pip install MYPACKAGE
Run Code Online (Sandbox Code Playgroud)

如果能了解您遇到的情况并与其他人分享您的解决方案,那就太好了。同时,使用pip的绝对路径也可以。