为什么pip会在我的虚拟环境之外安装一个包?

时间:2012-05-04 12:34:24

标签: python virtualenv pip

在完成虚拟环境的来源后,我尝试

pip install -U --no-deps django-social-auth

然后它返回:

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/django_social_auth-0.6.9-py2.6.egg-info/dependency_links.txt'

为什么要在virtualenv之外写作?

4 个答案:

答案 0 :(得分:8)

当我重命名包含我的虚拟环境的目录时遇到了这个问题。硬路径点使用不再正确。

更新pip脚本中的shebang以指向虚拟环境的python可执行文件。

答案 1 :(得分:4)

在我看来,要么你正在执行一个不属于virtualenv的pip,要么你是,但是被执行的python解释器不是virtualenv的一部分。检查你正在执行的pip是否是which pip正确的pip,并使用your_envdir/bin/python pip <arguments>从virtualenv强制python,而不是仅仅调用plain pip。

这很奇怪,因为如果你用bin / activate正确激活环境,你应该得到正确的点子。您确定已使用. bin/activate而不是sh bin/activate激活了吗?他们是两个不同的东西。提示改变了吗?

答案 2 :(得分:3)

你应该确保你从你的虚拟环境中获得点数,所以......像

./env/bin/pip install -U --no-deps django-social-auth

答案 3 :(得分:0)

我在PYTHONPATH中错误地设置了~/.bashrc时遇到了这个问题。如果echo $PYTHONPATH返回了您期望的环境之外的任何内容,请用export PYTHONPATH=''删除它,并检查~/.bashrc中是否有PYTHONPATH