代码之家  ›  专栏  ›  技术社区  ›  saclark

升级pip后出现DistributionNotFound错误

  •  10
  • saclark  · 技术社区  · 13 年前

    在阅读关于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 回复  |  直到 13 年前
        1
  •  21
  •   Samuel John    13 年前

    残酷的方式:

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

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

    这肯定会在python的旁边安装pip1.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安装python 。这将使您从brew和已安装的东西中获得的所有其他绑定保持不变。Python、pip和distribute将被最新版本所取代。

    此外:

    请检查您是否在中没有分布式或setuptools或pip /Library/Python/2.7/site-packages 该目录被所有python 2.7版本(brew或来自OS X)重新使用,并将干扰Homebrew已经安装的pip/distrive。

        2
  •  10
  •   liranz    13 年前

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

    其他提出的解决方案要么不起作用,要么用brew版本取代苹果版本的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
    

    如果链接不起作用,您总是可以找到较新版本的distribute here .

        3
  •  6
  •   joysun    11 年前

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

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

    希望有人会觉得这很有帮助。

        4
  •  4
  •   Jeff Tratner    12 年前

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

    编辑 /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')()
        )
    

    那么你可能在这一点上表现得很好。

        5
  •  2
  •   Kenial    13 年前

    我想知道哪里需要第1.2.1点,但我没有那么多时间。。。所以我把pip降到了1.2.1。在修改pip或分发包之前,这在一段时间内是没有帮助的。

    如何做到这一点?只需在控制台中键入以下内容(我希望您的分发包是好的):

    easy_install pip==1.2.1
    
        6
  •  2
  •   Lenciel    12 年前

    没有必要卸载python并重新安装它。安装最新的分发包,然后用它更新pip就可以了。

    wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
    sudo python ez_setup.py
    sudo easy_install -U pip
    
        7
  •  1
  •   Rockallite    11 年前

    通过两个步骤修复pip的现代版本(6.x)的正确方法

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

      rm -r /usr/local/lib/python2.7/site-packages/pip
      
    2. 按照 instructions 关于官方 管道 文档站点以重新安装。简称:

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

    对于 管道 6.x,无需安装旧版 distribute 包裹只是 setuptools ,默认情况下将通过 get-pip.py 上面提到的脚本。

        8
  •  0
  •   lutzh    13 年前

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

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

    easy_install --upgrade distribute
    easy_install --upgrade pip