我已经阅读了pip installing in global site-packages instead of virtualenv并确保一切都是正确的,我甚至在virtaulenv中使用easy_install重新安装了pip。
发生的事情很奇怪。首先,如果没有sudo,它不会让我安装一个包。如果我读取文本输出,它会像预期的那样将其放在virtualenv路径中。然后我使用sudo,它就起作用了。
但是如果我尝试安装这个包(在本例中是django-bootstrap3),那么它会声明:
(env)kevin@g3:~/djangoP/work$ sudo pip install django-bootstrap3
Requirement already satisfied (use --upgrade to upgrade): django-bootstrap3 in /usr/local/lib/python3.4/dist-packages据我所知,这意味着它安装在virtualenv之外。
我真的不知道该怎么办。我读了一些博客,很多人都有这个问题的变体,但我似乎找不到自己的解决方案。
我正在使用Ubuntu 14,Python 2.7,并在我的主目录中工作。
任何帮助都是最好的。
谢谢。
发布于 2015-09-22 00:25:43
您不应该使用sudo在virtualenv中安装包。
在我看来,这是一个文件权限问题。pip或virtualnev都是以ant根权限安装的,这就是当您尝试在virtualenv中安装新包时需要sudo的原因。
检查正在使用的可执行文件(virtualenv、pip)的文件权限。
dm@Z580:~$ which virtualenv
/usr/local/bin/virtualenv
dm@Z580:~$ ls -l /usr/local/bin/virtualenv
-rwxr-xr-x 1 root root 214 aug 18 21:20 /usr/local/bin/virtualenv
dm@Z580:~$ which pip
/usr/local/bin/pip
dm@Z580:~$ ls -l /usr/local/bin/pip
-rwxr-xr-x 1 root root 207 jun 3 15:33 /usr/local/bin/pip
dm@Z580:~$ virtualenv -p python2.7 testenv
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in testenv/bin/python2.7
Also creating executable in testenv/bin/python
Installing setuptools, pip, wheel...done.
dm@Z580:~$ source testenv/bin/activate
(testenv)dm@Z580:~$ which pip
/home/dm/testenv/bin/pip
(testenv)dm@Z580:~$ ls -l /home/dm/testenv/bin/pip
-rwxrwxr-x 1 dm dm 219 sep 21 17:29 /home/dm/testenv/bin/pip发布于 2015-09-22 01:02:23
您可以简单地使用
./bin/pip在你的虚拟环境中安装任何东西。(我无法评论,这就是我不得不在这里写的原因)。
发布于 2016-12-22 01:13:08
我今天遇到了同样的问题,原来我在.bash_profile文件中手动设置了PYTHONPATH变量,所以在激活我的虚拟环境export PYTHONPATH=之后,在我的shell中运行就能帮我解决这个问题。
https://stackoverflow.com/questions/32699585
复制相似问题