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


Багато, якщо тут біль. Просте загальне рішення - завантажити встановлений файл з: 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
Ha це просто дає мені помилку:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm

2
Відмінно працює і на Mac OS X 10.9. Дякую!
Антон Бабенко

2
Можливо, ви виявите, що а) вам потрібно застосувати sudo easy_install - оновити піп і б) потім у вас можуть виникнути помилки щодо колеса під час використання pip. У цей момент дивитися на це: stackoverflow.com/questions/20905350 / ...
mchicago

@PiotrDobrogost Я не погоджуюся - стаття, з якою ви пов’язані, стосується використання virtualenv, інакше у вас є базові пакети, і може виникнути конфлікти між програмами - у цьому випадку ми хочемо використовувати virtualenv. Однак, щоб встановити virtualenv, ви хочете встановити його глобально для всіх, а значить, sudo easyinstall. для установки virtualenv . що дозволяє virtualenv реально працювати, так як інакше встановити віртуальний env, не роблячи ручної (і тому важкої для обслуговування) установки.
mchicago

1
Отримав .. 'sudo easy_install3 - оновлення піп' зробив це
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 працювати.
mchicago

27

У мене виникло це питання, коли я використовував домашню мову. Ось рішення з випуску №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

Це знайдено на сторінці Gipub pip і працює для мене.


7

Якщо ви перебуваєте на CentOS, переконайтеся, що у вас встановлено пакет YUM "python-setuptools"

yum install python-setuptools

Виправлено це для мене.


6

Корінь проблеми часто є застарілими сценаріями у підкаталозі bin(Linux) або Scripts(Windows). Я поясню це, використовуючи проблему, з якою я зіткнувся як приклад.

У мене було встановлено virtualenv версії 1.10 в моїх веб-сайтах користувачів (факт, що це в користувацьких сайтах-пакетах, а не в системі-пакетах sytem, ​​тут не має значення)

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 роки після першого повідомлення про Stack Overflow.


1

У мене була ця проблема, тому що я встановив python / pip дивно, ~/.pydistutils.cfgщо я не пам’ятав написання. Видалили його, перевстановили (з pybrew), і все було добре.


1

У моєму випадку (проблема Sam, але в інших пакунках) не було залежності від версії. Послідовність видалення pip та pip insstall допомогла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.