在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
但是,如果我停用并尝试导入这些包,则会成功导入。不完全确定我做错了什么。
答案 0 :(得分:0)
这个错误发生在我身上,当我从另一个控制台通过pip安装时,认为我仍处于激活的virtualenv中,但实际上我处于停用的系统Python中。
使用byobu
,我喜欢在一个屏幕上同时打开多个控制台。
如果我忘记在新版本中激活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