点破了。如何修复DistributionNotFound错误?


146

每当我尝试使用pip时,都会出现错误。例如:

$ sudo pip install gevent-websocket

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1

我很想将pip的值更改为pip == 0.8.2 ..,但是我没有处理“ hacking”我的安装的后果...我正在运行python 2.7,pip的版本为0.8.2。


如果痛苦在这里很多。简单的通用解决方案是从以下网址下载安装的pip:https//bootstrap.pypa.io/get-pip.py,然后运行该文件(使用python)。其他修复程序非常依赖系统,并且通常比较混乱,下面的建议通常不起作用(基于我对两个不同系统孩子的经验)
GregD

Answers:


253

我在MacBook中发现了这个问题,原因是因为正如@Stephan所说,我easy_install 用来安装pip,而这两种py软件包管理工具的混合导致了pkg_resources.DistributionNotFound问题。解决方法是:

easy_install --upgrade pip

记住:只使用一个以上的工具来管理您的PY包。


55
呵呵,这只是给我一个错误:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm 2013年

2
同样适用于Mac OS X 10.9。谢谢!
安东·巴本科

2
您可能会发现a)您需要sudo easy_install --upgrade pip,而b)使用pip时可能会出现关于wheel的错误。在这一点上看看这个:stackoverflow.com/questions/20905350/...
mchicago

@PiotrDobrogost我不同意-您链接的文章是有关使用virtualenv的,否则您将拥有庞大的软件包,并且性能和应用程序之间可能会发生冲突-在这种情况下,我们使用virtualenv。但是,要安装virtualenv,您需要为每个人全局安装它,因此需要sudo easyinstall。用于virtualenv安装。这允许virtualenv实际工作,因此如何在不进行手动(因此难以维护)安装的情况下安装虚拟env。
mchicago 2014年

1
..'sudo easy_install3
--upgrade

31

我在/ usr / local / bin / pip的0.8.2中替换了0.8.1,一切都恢复了。

__requires__ = 'pip==0.8.2'
import sys
from pkg_resources import load_entry_point

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

我通过easy_install安装了pip,这可能使我头痛。我认为这是您现在应该做的..

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv

13
我总是尽量避免使用OS软件包管理器安装纯python软件包-我建议您也这样做。Ubuntu / Debian曾经破坏了setuptools软件包,并引起了一些麻烦,因为人们无法使用pip卸载软件包(由于更改)。
雨果·塔瓦雷斯

使用apt或yum尚不可知!此页面上的策略适合本地开发,但是请不要在部署时执行此操作。
2012年

同样,在Mac上升级到1.3.1时pip会自行杀死,而pip自己则说仍然是1.2.1 ...
Anthony Liekens

@PiotrDobrogost请参阅上面的评论-在这种情况下,它需要使virtualenv正常工作。
mchicago 2014年

27

我在使用自制软件时遇到了这个问题。这是第26900期的解决方案

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

尝试使用--user选项和不使用--user选项(后者需要sudo)可能会有所帮助。

11

尝试使用get-pip脚本重新安装:

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

这是从pip Github页面上获取的,并为我工作。



6

问题的根源通常是bin(Linux)或Scripts(Windows)子目录中的过时脚本。我将以我遇到的问题为例对此进行解释。

我在用户站点包中安装了virtualenv 1.10版本(实际上,它在用户站点包中而不是系统站点包中是无关紧要的)

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10

将其升级到版本1.11后,出现以下错误:

pdobrogost@host:~$ virtualenv --version  
Traceback (most recent call last):   
  File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
    return self.__dep_map   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
    if insert: 
pkg_resources.DistributionNotFound: virtualenv==1.10

/home/users/pdobrogost/.local/bin/virtualenv错误消息中提到的文件如下所示:

#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
    ) 

在那里,我们看到该virtualenv脚本未更新,仍然需要先前安装的virtualenv 1.10版本。
现在,像这样重新安装virtualenv

pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
  Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

无济于事(两者都不是pip install --user --upgrade --force-reinstall virtualenv),因为脚本/home/users/pdobrogost/.local/bin/virtualenv保持不变。

我可以解决此问题的唯一方法是从/home/users/pdobrogost/.local/bin/文件夹中手动删除virtualenv *脚本,然后再次安装virtualenv。之后,新生成的脚本将引用该软件包的正确版本:

pdobrogost@host:~$ virtualenv --version
1.11

6

我能够这样解决:

$ brew update
$ brew doctor
$ brew uninstall python
$ brew install python --build-from-source    # took ~5 mins
$ python --version                           # => Python 2.7.9
$ pip install --upgrade pip

我正在运行以下内容(截至2015年1月2日):

OS X Yosemite
Version 10.10.1

$ brew -v
Homebrew 0.9.5

$ python --version
Python 2.7.9

$ ipython --version
2.2.0

$ pip --version
pip 6.0.3 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.3-py2.7.egg (python 2.7)

$ which pip
/usr/local/bin/pip

5

我在OSx中面临类似的问题。我的堆栈跟踪说

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3

然后我做了以下

sudo pip install --upgrade setuptools

这为我解决了问题。希望有人会觉得有用。


1
这个固定在Windows 10,我的问题
马克·艾伦

1
这解决了该问题对我们在CentOS 6
丹Phillimore

2

在Mac OS X(MBP)上,以下内容(从此处找到的另一个答案中解决)解决了我的问题:

C02L257NDV33:~ jjohnson$ brew install pip
Error: No available formula for pip
Homebrew provides pip via: `brew install python`. However you will then
have two Pythons installed on your Mac, so alternatively you can:
    sudo easy_install pip
C02L257NDV33:~ jjohnson$ sudo easy_install pip

显然,这里的根本原因是使用第二种方法来安装python(在我的情况下是Homebrew)。希望负责pip脚本的人员可以解决此问题,因为自从首次报告Stack Overflow以来,该问题仍然有意义两年。


1

我遇到了这个问题,因为我安装了python / pip ~/.pydistutils.cfg,但我不记得自己写了。删除它,重新安装(带有pybrew),一切都很好。


1

就我而言(山姆问题,但其他软件包)没有版本依赖性。一系列的pip卸载和pip insstall确实有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.