【问题标题】:VirtualEnv/Pip trying to install packages globallyVirtualEnv/Pip 尝试全局安装包
【发布时间】:2014-01-23 10:40:16
【问题描述】:

编辑 #2 找到解决方案;见下文。

我正在使用 VirtualEnv 在 Flask 中编写一个小应用程序。这远不是我第一次这样做,但是这一次和过去两次我尝试过都遇到了同样的问题。当我. flask/bin/activate 并尝试安装一个包时——例如pip install flup——它一直在全局安装,而不是在 VirtualEnv 中。奇怪的是,它只发生在我deactivate 之后,而且前后不一致。

也就是说,如果我一次安装所有我需要的东西,我似乎能够安装所有我需要的东西,甚至偶尔在我 deactivate 之后,但在一定的时间间隔之后它只是 停止工作 并且它开始尝试安装到我的全局 Python site-packages 中。 (当然,它在执行此操作时也会请求权限。在我理解发生了什么之前,我试图用sudo 强制它,以为我不小心把它带到了自己身上 sudo virtualenv flask-ing 之类的,但不,由于其他原因,它正在走向全球。)

我没有做任何有趣的事情,比如使用 --system-site-packages 参数,而且在它开始发生之前我没有更改我的 VirtualEnv 配置中的任何内容。第一次发生时,我把它归结为侥幸。现在它变得非常烦人,因为我没有心情每次都卸载并重新安装它,或者祈祷我会在引导脚本中考虑我需要的一切。

我没有包含任何错误消息,因为它们不是(或似乎不是)特别有价值;只是requirement already satisfied一遍又一遍地对我大喊大叫。

编辑 #1 我正在稍微筛选问题,但我仍然没有解决方案。我在同一目录下创建了一个新的 Flask 项目,cd-ed 到其中,激活了它的 VirtualEnv 等,然后运行which pip。这是新的 VirtualEnv 的点子——正确的点子。我停用了cd-ed 到我的原始项目,激活了 VirtualEnv,然后运行了which pip。它吐出另一个项目的 - 新项目的 - pip。我rm -r-ed 新的测试项目,回到原来的,再次运行which pip,它吐出/usr/local/bin/pip。哦。好的。

编辑#2:解决方案 我可能没有弄清楚确切的原因,但我确实找到了解决方案。 bin/activatebin/pip 脚本本身以某种方式被更改,可能是由于意外同时运行了两个 VirtualEnv(?)。也许这只是巧合,以前从未发生过,连续发生了三次。不知道。

cat-ed activate 果然在第 42 行是

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"

而不是

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"

我改变了它,再次运行which pip,得到了正确的结果。尝试安装,得到一个堆栈跟踪,引导我到bin/pip,发现它的 shebang 是错误的。将其更改为正确的路径,一切正常。

【问题讨论】:

  • 当你在没有 sudo 的情况下运行它时,它为什么有权安装在你的全局 python 上?还是尝试失败了?
  • 它正在尝试和失败,但我无法弄清楚为什么它首先要尝试。
  • 只需使用完整路径运行 virtualenv 的 pip(即不要依赖搜索可执行路径),甚至不需要激活环境。它会做正确的事。
  • 我也发生了同样的事情。发生这种情况是因为我移动了环境位置。我去编辑了激活路径到其新的正确位置 VIRTUAL_ENV="/Users/USERNAME/ENIVRONMENT_NAME"

标签: python python-2.7 virtualenv pip


【解决方案1】:

我遇到了同样的问题。对我来说,原因是我的 virtualenv 在路径中有空格。

将 virtualenv 移动到无空间路径解决了这个问题。

【讨论】:

    【解决方案2】:

    如果您重命名了包含 ENV - 虚拟环境目录的项目目录,请尝试清除 ENV 目录并重新创建 virtualenv 并激活它并重新安装 pip 依赖项。

    TL-DR; 删除虚拟环境,新建一个,激活它并再次发出 pip 命令。

    【讨论】:

    • 您的意思是虚拟环境的名称中不应包含“env”吗?因为我在名称中包含“env”的虚拟环境中遇到了上述错误。 (它也在一个名称中带有“env”的目录中。)
    • 按照google gae网站的例子,解决方案是用其他名称替换env。
    【解决方案3】:

    使用此链接 (Python packages not installing in virtualenv using pip)。

    如果你的 shebang 没问题,请确保在安装到虚拟环境时不要使用“sudo -H”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-23
      • 2014-01-24
      • 2019-10-26
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2019-05-24
      相关资源
      最近更新 更多