小伙子打破了.如何修复DistributionNotFound错误?

Ste*_*han 144 python pip

每当我尝试使用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
Run Code Online (Sandbox Code Playgroud)

我觉得很想把值改成pip == 0.8.2 ..但我不觉得处理"黑客攻击"安装的后果......我正在运行python 2.7并且pip是0.8.2版本.

New*_*one 248

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

easy_install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

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

  • 哈,这只是给我错误:`pkg_resources.DistributionNotFound:distribute == 0.6.36` (55认同)
  • 在Mac OS X 10.9上也很好用.谢谢! (2认同)
  • 你可能会发现a)你需要sudo easy_install --upgrade pip和b)你可能会在使用pip时得到关于wheel的错误.那时请看一下:http://stackoverflow.com/questions/20905350/latest-pip-fails-with-requires-setuptools-0-8-for-dist-info (2认同)

Ste*_*han 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')()
    )
Run Code Online (Sandbox Code Playgroud)

我通过easy_install安装了pip,这可能让我头疼.我想这就是你现在应该怎么做的..

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Run Code Online (Sandbox Code Playgroud)

  • 我一直试图避免使用OS包管理器安装纯Python包 - 我建议你也这样做.Ubuntu/Debian曾经破坏了setuptools软件包,它引起了一些令人头疼的问题,因为人们无法使用pip卸载软件包(由于它们的更改). (12认同)

Lou*_*men 26

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

python -m pip install --upgrade --force pip
Run Code Online (Sandbox Code Playgroud)


pav*_*van 11

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

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
Run Code Online (Sandbox Code Playgroud)

这来自pip Github页面,并为我工作.

  • 上面的网址已更改为`https:// bootstrap.pypa.io / get-pip.py` (2认同)

Dav*_*cea 7

如果您在CentOS上,请确保安装了YUM软件包"python-setuptools"

yum install python-setuptools
Run Code Online (Sandbox Code Playgroud)

为我修好了.


Pio*_*ost 6

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

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

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10
Run Code Online (Sandbox Code Playgroud)

我将其升级到版本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
Run Code Online (Sandbox Code Playgroud)

/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')()
    ) 
Run Code Online (Sandbox Code Playgroud)

在那里,我们看到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...
Run Code Online (Sandbox Code Playgroud)

没有帮助(两者都没有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
Run Code Online (Sandbox Code Playgroud)


her*_*ara 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
Run Code Online (Sandbox Code Playgroud)

我正在运行以下东西(截至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
Run Code Online (Sandbox Code Playgroud)


Nab*_*bin 5

我在 OSx 中遇到了类似的问题。我的堆栈跟踪说

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3
Run Code Online (Sandbox Code Playgroud)

然后我做了以下

sudo pip install --upgrade setuptools
Run Code Online (Sandbox Code Playgroud)

这为我解决了这个问题。希望有人会发现这很有用。