升级pip后发布DistributionNotFound错误

时间:2013-03-20 01:45:08

标签: runtime-error pip traceback

在阅读virtualenv here时,我意识到我没有点差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

不确定如何处理错误。感谢。

8 个答案:

答案 0 :(得分: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 或您拥有的其他版本。
  • 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。

答案 1 :(得分: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

如果该链接不起作用,您可以随时找到更新版本的分发here

答案 2 :(得分: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')()
    )
那时你可能完全擅长这一点。

答案 3 :(得分:4)

我今天遇到了类似的问题。经过一些研究,我通过重新安装pip来解决它: -

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

希望有人会觉得有帮助。

答案 4 :(得分:2)

我想知道pip 1.2.1在哪里需要,但我没有那么多时间......所以我只是将pip降级到1.2.1。它有一段时间没有帮助,直到pip或分发包被修改。

怎么做?只需在控制台中键入此内容(我希望您的发布包很好):

easy_install pip==1.2.1

答案 5 :(得分:2)

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

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo python ez_setup.py
sudo easy_install -U pip

答案 6 :(得分:1)

以2个步骤修复现有版本(6.x)pip的正确方法

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

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

    curl -O https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    
  3. 对于pip 6.x,无需安装旧版distribute包。只需setuptools,默认情况下将通过上述get-pip.py脚本安装。

答案 7 :(得分:0)

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

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

easy_install --upgrade distribute
easy_install --upgrade pip