VirtualEnv / Pip尝试全局安装软件包

时间:2014-01-06 04:26:54

标签: python python-2.7 virtualenv pip

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

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

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

我没有做任何有趣的事情,比如使用--system-site-packages参数,我在VirtualEnv配置开始发生之前没有改变任何东西。它第一次发生时,我把它归结为侥幸。现在它变得非常恼火,因为我没有心情卸下所有东西并每次重新安装它,或者祈祷我会在引导脚本中想到我需要的一切。

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

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

编辑#2:解决方案我可能没有找到确切的原因,但我确实找到了解决方案。 bin/activatebin/pip脚本本身在某种程度上被改变了,可能是因为意外地同时运行了两个VirtualEnv(?)。也许只是巧合,它在以前从未发生过三次连续发生过。说不上。

cat - 编辑activate,当然,第42行是

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

而不是

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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