【问题标题】:pip3 says "resolve pkg_resources.DistributionNotFound: pip==1.3.1"pip3 说“解决 pkg_resources.DistributionNotFound: pip==1.3.1”
【发布时间】:2013-08-25 21:14:30
【问题描述】:

在 OSX 10.7.5 上,我正在尝试使用 pip3 命令将软件包安装到 python3。当我尝试时,我收到以下错误消息:

zak$ pip3
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2793, in <module>
  File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 673, in require
  File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 580, in resolve
pkg_resources.VersionConflict: (pip 1.4.1 (/usr/local/lib/python3.3/site-packages), Requirement.parse('pip==1.3.1'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 5, in <module>
    from pkg_resources import load_entry_point
  File "<frozen importlib._bootstrap>", line 1567, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1534, in _find_and_load_unlocked
  File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2797, in <module>
  File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 576, in resolve
pkg_resources.DistributionNotFound: pip==1.3.1

看起来setuptools 要求使用旧版本的 pip(我安装了 1.4.1),但为什么呢?我该如何解决这个问题?

【问题讨论】:

  • 您是否安装了任何东西,或者这是使用 Homebrew 的 pip 开箱即用?我不会对后者感到感到惊讶,因为 setuptools 1.0 是相当新的,并且有一些向后不兼容的地方,而且 Homebrew 的配方可能还没有完全更新……但最好排除早期安装的不兼容遗留物(例如,您已经分发,然后安装了最近的 setuptools 而没有先卸载分发)。
  • 另外,你有PYTHONPATH吗?如果您在 Python 中print(sys.path),这些目录是否与您机器上的任何其他 Python 安装共享?
  • 经过一番鬼混之后,我能够通过安装 Python.org 3.3(将 /Library/Frameworks/Python.framework/Versions/3.3/bin 放在 PATH 上而不是链接到 /usr/local/bin)来触发它,安装 pip 1.3.1及其最小依赖项,然后安装带有 pip 1.4.1 的 Homebrew 3.3。我最终得到 /usr/local/bin/pip3 是 1.3.1 python.org 脚本,但指向 /usr/local/bin/python3.3,这是 Homebrew 版本,它在 /usr/local/lib/python3.3/site-packages 中找到 pip 1.4.1。
  • 显而易见的解决方法是:卸载另一个 Python 3.3,取消 brew 的链接,rm -rf /usr/local/lib/python3.3,重新链接 brew。除非您需要两个 Python 3.3 版本,或者您绝对确定这不适用于您,否则请尝试一下。
  • brew 实际安装的任何东西都将是/usr/local/Cellar 中某些东西的符号链接(具体来说,在/usr/local/Cellar/python3/3.3.2/ 中,但您只需检查地窖就可以了)。或者,更简单地说,您可以brew unlink python3 它会消失(然后brew link python3 会找回它)。问题是,如果你做了类似pip3 install ipython 之类的操作,你最终可能会得到一个/usr/local/bin/ipython3,它是/usr/local/lib/python3.3/site-packages 中某个东西的符号链接,无论它是由Brew python 还是其他安装的。

标签: python macos python-3.x pip setuptools


【解决方案1】:

问题似乎是您有两个不同的 Python 3.3 安装,以及一个共享的站点包目录。*您以 pip3 运行的工具来自 pip 1.3.1,但它用来执行它的模块工作来自 pip 1.4.1。

解决此问题的最简单方法是,除非您确实需要两个 Python 3.3 安装,否则完全摆脱它们,然后重新安装您想要的。

以下应该可以工作(对于某些命令,可能使用sudo,或者使用 Finder 并让它告诉您是否需要进行身份验证)。

请注意,这将部分或完全删除任何其他第三方 Python 版本(例如,python.org 2.7.5),我认为这对您来说不是问题,但可能适合未来的读者。

您可能想在卸载任何东西之前列出所有已安装的软件包。 (我通常以最骇人听闻的方式做到这一点:启动ipython,然后让它用制表符完成导入语句……)

最后,对于未来遇到类似问题的读者来说,其中一些细节会有所不同,但基本思想应该是相同的。

  • brew uninstall python3
  • rm -rf /Library/Frameworks/Python.framework
  • rm -rf /usr/local/lib/python*
  • rm -rf /usr/local/share/python*
  • ~/.bash_profile(或~/.profile 或其他地方)中查找将Python 路径添加到PATH 的位置。您可能有/usr/local/share/python3 和/或Python.frameworkCellar/python3 中的某些内容。废弃所有你发现的东西。
  • 在 Terminal.app 中启动一个新的 shell。
  • brew doctor,并修复它抱怨的任何可能相关的东西(非 Homebrew MacFUSE 的东西照原样很好;brew prune 的建议可能值得做,但在这里无关紧要),然后再次运行它以确保。
  • brew install python3
  • pip3 重新安装您删除的所有需要​​再次安装的软件包。

* 详情:

  • Homebrew Python 3.3 安装在 /usr/local/Cellar/python3/3.3.2/ 中,各种符号链接到 /usr/local/bin 及其兄弟姐妹中,还可能链接到 /Library 某处。
  • 另一个 Python 3.3(可能来自 python.org 安装程序)安装在 /Library/Frameworks/Python.framework/Versions/3.3/ 中,各种内容可能符号链接到 /usr/local/bin 或以其他方式添加到您的 PATH。
  • 两者都可能在其站点包搜索中包含/usr/local/lib/python3.3

【讨论】:

    【解决方案2】:

    运行后

    pip install --upgrade setuptools

    我能够修复它。但这可能并不适用于所有人,因为我还在学习 Python。

    【讨论】:

      【解决方案3】:

      这似乎是由损坏的 Python 安装引起的,我能够通过使用 Homebrew 重新安装 Python 来修复它。

      brew reinstall python3
      

      【讨论】:

        猜你喜欢
        • 2014-06-28
        • 2014-09-10
        • 2015-12-18
        • 2013-12-15
        • 1970-01-01
        • 2021-07-31
        • 2017-07-06
        • 2020-01-22
        • 1970-01-01
        相关资源
        最近更新 更多