10

在这里阅读有关 virtualenv时,我意识到我没有 pip 1.3+,所以我跑了pip install --upgrade pip,现在当我运行时,pip --version我得到以下信息:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 2807, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 594, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==1.2.1

如果它有帮助,或者完全相关,我的$PATH样子是这样的:

/usr/local/bin:/usr/local/share/python:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin

另外,which pip给我/usr/local/bin/pip.

不知道如何处理该错误。谢谢。

4

8 回答 8

21

残酷的方式:

假设您使用的是 Mac 的自制软件(因为我看到 /usr/local/Cellar),我建议

  • 删除(或备份)/usr/local/lib/python2.7,和
  • brew rm python && brew install python.

这肯定会在 python 旁边安装 pip 1.3.3。您的分发也将是 0.6.35。

软方式:

/usr/local/lib/python2.7/site-packages刚刚删除:

  • easy-install.pth
  • pip-1.2.1-py2.7.egg 或您拥有的其他版本的 pip。
  • distribute-0.6.34-py2.7.egg 或其他版本

那么,brew rm python && brew install python。这将使 brew 和已安装的所有其他绑定保持不变。Python、pip 和distribute 将被最新版本取代。

此外:

请检查您是否没有位于/Library/Python/2.7/site-packages. 该目录被所有 python 2.7 版本(酿造或来自 OS X)重用,并且会干扰 Homebrew 已经安装的 pip/distribute。

于 2013-03-22T08:40:33.580 回答
10

今天从 OS X Lion 升级到 Mountain Lion 后,我碰巧遇到了类似的状态。

其他提议的解决方案要么不起作用,要么用 brew 版本替换 Apple 版本的 Python,我不确定这是 saclark 要求的。

我所做的修复它是distribute手动安装,从而easy_install恢复工作,然后安装pip它。

命令是:

$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.45.tar.gz
$ tar -xzvf distribute-0.6.45.tar.gz
$ cd distribute-0.6.45
$ sudo python setup.py install
$ sudo easy_install pip

如果链接不起作用,您始终可以在此处找到更新版本的分发。

于 2013-06-02T14:38:42.787 回答
6

我今天遇到了类似的问题。经过一番研究,我通过使用以下方法重新安装 pip 来解决它:-

python -m pip install --upgrade --force-reinstall pip

希望有人会觉得它有帮助。

于 2015-04-08T01:45:23.280 回答
4

顺便说一句,有一种更简单的方法可以做到这一点(我刚遇到这个)。

编辑/usr/local/bin/pip并更改对版本号的引用(因此,您希望在下面将“1.5.6”更改为您正在使用的任何版本号):

#!/usr/local/opt/python/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.6','console_scripts','pip'
__requires__ = 'pip==1.5.6'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
    )

那么你可能会在这一点上做得很好。

于 2014-09-04T06:44:29.177 回答
2

我想知道在哪里需要 pip 1.2.1,但我没有太多时间......所以我只是将 pip 降级到 1.2.1。暂时无能为力,直到修改 pip 或分发包。

这该怎么做?只需在控制台中输入这个(我希望你的分发包很好):

easy_install pip==1.2.1
于 2013-03-29T23:57:02.097 回答
2

无需卸载 python 并重新安装。安装最新的分发包,然后用它更新 pip 应该可以解决问题。

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo python ez_setup.py
sudo easy_install -U pip
于 2013-10-24T14:26:03.787 回答
1

分两步修复现代版本(6.x)pip 的正确方法

  1. 删除pipPython 的site-package. 对于 Homebrew Python 2.7,请执行以下操作:

    rm -r /usr/local/lib/python2.7/site-packages/pip
    
  2. 按照官方文档站点上的说明重新安装它。pip简而言之:

    curl -O https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    

对于pip6.x,无需安装旧distribute包。Just setuptools,默认情况下将通过上述get-pip.py脚本安装。

于 2015-04-28T03:57:30.313 回答
0

嗯..令人费解。想知道 1.2.1 是从哪里来的。只是出于好奇,您可以发布/usr/local/bin/pip 的内容吗?应该只有几行。

您可以尝试使用分发更新 pip(再次),也可以自行分发..

easy_install --upgrade distribute
easy_install --upgrade pip
于 2013-03-21T15:44:00.113 回答