【问题标题】:DistributionNotFound error after upgrading pip升级 pip 后出现 DistributionNotFound 错误
【发布时间】:2013-03-20 01:45:08
【问题描述】:

在阅读有关 virtualenv here 的信息时,我意识到我没有 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

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

【问题讨论】:

    标签: runtime-error pip traceback


    【解决方案1】:

    残酷的方式:

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

    • 删除(或备份)/usr/local/lib/python2.7,然后
    • brew rm python &amp;&amp; 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 &amp;&amp; brew install python。这将使 brew 和已安装的所有其他绑定保持不变。 Python、pip 和distribute 将替换为最新版本。

    另外:

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

    【讨论】:

    • ls -a,在 cd-ing 到 /Library/Python/2.7/site-packages 之后只给了我三个文件:...README。所以我想我在这方面做得很好。
    • 好吧,那你没有发sudo easy_install pip,这很好。
    • 为什么这是必要的?是否存在针对自制软件的相关问题?
    【解决方案2】:

    今天从 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

    【讨论】:

    • 这对我有用,而且比brew rm python &amp;&amp; brew install python 的其他答案简单得多——谢谢!
    • 也为我工作。谢谢!
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案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')()
          )
      

      那么你可能在这一点上非常出色。

      【讨论】:

      • 以上所有其他答案对我来说都失败了,这行得通!谢谢杰夫。
      【解决方案5】:

      我想知道在哪里需要 pip 1.2.1,但我没有太多时间......所以我只是将 pip 降级到 1.2.1。暂时没救了,等pip或者distribute包修改好了。

      如何做到这一点?只需在控制台中输入这个(我希望你的分发包很好):

      easy_install pip==1.2.1
      

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          1. 删除 Python 的 site-package 中的 pip 包。对于 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
            

          对于pip 6.x,无需安装旧版distribute 软件包。就是setuptools,默认会通过上面提到的get-pip.py脚本安装。

          【讨论】:

            【解决方案8】:

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

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

            easy_install --upgrade distribute
            easy_install --upgrade pip
            

            【讨论】:

            • 如果我没记错的话,我相信 1.2.1 是我运行 pip install --upgrade pip 之前的 pip 版本。 nano /usr/local/bin/pip 给我:#!/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/Resou$ # EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.2.1','console_scripts','pip' __requires__ = 'pip==1.2.1' import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.exit( load_entry_point('pip==1.2.1', 'console_scripts', 'pip')() )
            • 这里有一些链接可以帮助解决这个问题(我在不知道自己在做什么的情况下犹豫不决):pip broke; --homebrew python issue; --cant use pip; --using pip w/ homebrew python; -- homebrew/distributionnotfound error
            • 显然 pip --upgrade pip 出于某种原因没有升级 pip。我认为在我的回复中执行 easy_install 命令没有任何危险。如果一切都失败了,你也可以重新安装 /re-brew python(brew rm python,然后 brew install python)。
            猜你喜欢
            • 2013-09-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-19
            • 1970-01-01
            • 1970-01-01
            • 2019-07-17
            相关资源
            最近更新 更多