pip on virtualenv并没有在正确的python环境中安装软件包

时间:2014-05-21 21:02:05

标签: python virtualenv

在virtualenv上执行source activate之后,我执行以下操作:pip install requests我得到了:

sudo pip install requests
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/local/lib/python2.7/dist-packages
Cleaning up...

现在当我运行python并尝试在使用virtualenv python时在python上导入它

>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests
>>>

所以我想,哦,也许它正在查看错误的python,所以我做了一个python和哪个pip

(dev)sshum@mysite:~/dev/bin$ which python
/var/www/mysite/mysite/dev/bin/python
(dev)sshum@mysite:~/dev/bin$ which pip
/var/www/mysite/mysite/dev/bin/pip

但是,如果我停用并尝试导入这些包,则会成功导入。不完全确定我做错了什么。

3 个答案:

答案 0 :(得分:0)

这个错误发生在我身上,当我从另一个控制台通过pip安装时,认为我仍处于激活的virtualenv中,但实际上我处于停用的系统Python中。

使用byobu,我喜欢在一个屏幕上同时打开多个控制台。

  1. 使用F2我打开新的完整窗口
  2. 我激活了virtualenv,我想继续
  3. 出于某种原因,我拆分屏幕并使用新的分割
  4. 如果我忘记在新版本中激活virtualenv,我遇到了你描述的同样问题。

答案 1 :(得分:0)

经过一些修补后找到解决方案。好像sudo pip install {package}更改了安装路径。由于virtualenv位于var文件夹中,我需要root权限来安装东西(这是我意识到的不好的做法)。相反,我选择做的是su root然后pip install激活virtualenv。

答案 2 :(得分:0)

如果其他一切都失败了或者您想因某些原因继续使用sudo,只需直接指定pip可执行文件的路径:

sudo ./my/virtualenv/bin/pip install foobar