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

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

Ответ 1

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

easy_install --upgrade pip

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

Ответ 2

Я заменил 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

Ответ 3

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

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

Ответ 4

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

yum install python-setuptools

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

Ответ 5

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

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

Это происходит из страницы pip github и работает для меня.

Ответ 6

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

У меня была виртуальная версия 1.10, установленная в моих сайтах-сайтах пользователя (факт, что в сайтах user site-пакетов не sytem-сайт-пакеты здесь неактуальны)

[email protected]:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
[email protected]:~$ virtualenv --version
1.10

После обновления до версии 1.11 я получил следующую ошибку:

[email protected]:~$ 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 script не обновлялся и по-прежнему требует ранее установленной версии 1.10 virtualenv.
Теперь, переустановив virtualenv, как это

[email protected]:~$ 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), потому что script /home/users/pdobrogost/.local/bin/virtualenv остается неизменным.

Единственный способ исправить это - вручную удалить скрипты virtualenv * из папки /home/users/pdobrogost/.local/bin/ и снова установить virtualenv. После этого вновь созданные сценарии относятся к правильной версии пакета:

[email protected]:~$ virtualenv --version
1.11

Ответ 7

Я смог разрешить это так:

$ 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

Я запускаю w/следующие материалы (по состоянию на 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

Ответ 8

Я столкнулся с аналогичной проблемой в OSx. Мой стек сказал:

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

Затем я сделал следующее

sudo pip install --upgrade setuptools

Это решило проблему для меня. Надеюсь, кто-то найдет это полезным.

Ответ 9

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

Ответ 10

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

Ответ 11

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