сломался. как исправить ошибку DistributionNotFound?


146

Всякий раз, когда я пытаюсь использовать пункт, я получаю сообщение об ошибке. Например:

$ 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 == 0.8.2 .. но я не чувствую, что имею дело с последствиями "взлома" моей установки ... Я использую python 2.7, а pip версии 0.8.2.


Много, если боль здесь. Простое общее решение состоит в том, чтобы загрузить установленный pip по адресу : https://bootstrap.pypa.io/get-pip.py, а затем запустить этот файл (используя python). Другие исправления очень зависят от системы и обычно беспорядочные, а приведенные ниже рекомендации часто не работают (основываясь на моем опыте работы с двумя разными детьми системы)
GregD

Ответы:


253

Я нахожу эту проблему в своем MacBook, причина в том, что, как сказал @Stephan, я использую easy_install для установки pip, и сочетание обоих инструментов управления пакетами py привело к pkg_resources.DistributionNotFoundпроблеме. Решимость:

easy_install --upgrade pip

Помните: просто используйте один из вышеперечисленных инструментов для управления вашими пакетами Py.


55
Ха это просто дает мне ошибку:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm

2
Отлично работает на Mac OS X 10.9. Спасибо!
Антон Бабенко

2
Вы можете обнаружить, что a) вам нужно выполнить sudo easy_install --upgrade pip и b) вы можете получить ошибки о wheel при использовании pip. В этот момент посмотрите на это: stackoverflow.com/questions/20905350/…
mchicago

@PiotrDobrogost Я как-то не согласен - статья, на которую вы ссылались, посвящена использованию virtualenv, в противном случае у вас есть пакеты bazillion и производительность, и могут возникнуть конфликты между приложениями - в этом случае мы хотим использовать virtualenv. Однако, чтобы установить virtualenv, вы хотите установить его глобально для всех, и, следовательно, sudo easyinstall. для установки virtualenv . который позволяет virtualenv действительно работать, так как иначе установить виртуальную среду без выполнения ручной (и, следовательно, сложной в обслуживании) установки.
Чикаго

1
получил .. 'sudo easy_install3 - upgrade pip' сделал это
pavan

31

Я заменил 0.8.1 в 0.8.2 в / usr / local / bin / pip и все снова заработало.

__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')()
    )

Я установил pip через easy_install, что, вероятно, вызвало у меня эту головную боль. Я думаю, что это то, как вы должны сделать это в настоящее время ..

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

13
Я всегда стараюсь не устанавливать чистые пакеты Python с помощью менеджеров пакетов ОС - и я рекомендую вам делать то же самое. Ubuntu / Debian однажды сломал пакет setuptools, и это вызвало некоторые головные боли, потому что люди не могли удалить пакеты с помощью pip (из-за их изменений).
Уго Таварес

использование apt или yum недостаточно агностично! стратегии на этой странице подходят для локального развития, но, пожалуйста, не делайте этого для развертываний.
Кен

То же самое здесь, pip покончил с собой при обновлении до 1.3.1 на Mac, в то время как сам pip упомянул, что все еще был 1.2.1 ...
Энтони Лиекенс,

@PiotrDobrogost, пожалуйста, смотрите комментарий выше - это необходимо в этом случае, чтобы заставить virtualenv работать.
Чикаго

27

У меня была эта проблема, когда я использовал homebrew. Вот решение проблемы № 26900

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

Может быть полезно попробовать это как с параметром --user, так и без него (последний требует sudo).
Рэй

11

Попробуйте переустановить с помощью скрипта get-pip:

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

Это взято из пип-страницы Github и работает для меня.


7

Если вы используете CentOS, убедитесь, что у вас установлен пакет YUM "python-setuptools"

yum install python-setuptools

Исправил это для меня.


6

Корень проблемы часто устаревшие сценарии в binScripts подкаталоге (Linux) или (Windows). Я объясню это на примере проблемы, с которой я столкнулся.

У меня была виртуальная версия 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скрипт не обновлялся и все еще требует ранее установленную версию 1.10 virtualenv.
Теперь переустановка 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 оставлен без изменений.

Единственный способ исправить это - вручную удалить сценарии virtualenv * из /home/users/pdobrogost/.local/bin/папки и снова установить 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

Я бегу со следующими вещами (по состоянию на 2 января 2015 г.):

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.
Дэн Филлимор

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, могут исправить эту проблему, поскольку она все еще актуальна через 2 года после первого сообщения о переполнении стека.


1

У меня была эта проблема, потому что я установил python / pip со странным, ~/.pydistutils.cfgчто я не помню, как писал. Удалил его, переустановил (с pybrew), и все было хорошо.


1

В моем случае (проблема с sam, но с другими пакетами) не было зависимости от версии. Последовательность pip uninstall и pip insstall действительно помогла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.