pip się zepsuł. jak naprawić błąd DistributionNotFound?

146

Za każdym razem, gdy próbuję użyć pip, pojawia się błąd. Na przykład:

$ 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

Czuję pokusę, aby zmienić wartość na pip == 0.8.2 .. ale nie czuję do czynienia z konsekwencjami „hakowania” mojej instalacji ... Używam Pythona 2.7, a pip jest w wersji 0.8.2.

Stephan
źródło
Dużo, jeśli ból tutaj. Prostym ogólnym rozwiązaniem jest pobranie pip zainstalowanego z: https://bootstrap.pypa.io/get-pip.py, a następnie uruchomienie tego pliku (za pomocą Pythona). Inne poprawki są bardzo zależne od systemu i generalnie niechlujne, a poniższe sugestie często nie działają (na podstawie moich doświadczeń z dwoma różnymi dziećmi systemu)
GregD

Odpowiedzi:

253

Znajduję ten problem w moim MacBooku, powodem jest to, że jak powiedział @Stephan, używam easy_install do instalacji pip, a połączenie obu narzędzi do zarządzania pakietami py doprowadziło do pkg_resources.DistributionNotFoundproblemu. Rozwiązanie jest następujące:

easy_install --upgrade pip

Pamiętaj: po prostu użyj jednego z powyższych narzędzi do zarządzania pakietami Py.

NewPtone
źródło
55
Ha to właśnie daje mi błąd:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Działa również świetnie na Mac OS X 10.9. Dzięki!
Anton Babenko
2
Może się okazać, że a) potrzebujesz sudo easy_install --upgrade pip oraz b) możesz otrzymać błędy dotyczące koła podczas korzystania z pip. W tym momencie spójrz na to: stackoverflow.com/questions/20905350/ ...
mchicago
@PiotrDobrogost Trochę się nie zgadzam - podlinkowany artykuł dotyczy korzystania z virtualenv, w przeciwnym razie masz miliard pakietów i wydajność i mogą wystąpić konflikty między aplikacjami - w tym przypadku chcemy użyć virtualenv. Jednak aby zainstalować virtualenv, chcesz zainstalować go globalnie dla wszystkich, a zatem sudo easyinstall. do instalacji virtualenv . co pozwala virtualenv faktycznie działać, więc jak inaczej zainstalować wirtualne środowisko bez wykonywania ręcznej (a zatem trudnej w utrzymaniu) instalacji.
mchicago,
1
got .. 'sudo easy_install3 --upgrade pip' zrobiło to
pavan
31

Zastąpiłem 0.8.1 w 0.8.2 w / usr / local / bin / pip i wszystko znowu działało.

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

Zainstalowałem pip przez easy_install, co prawdopodobnie spowodowało ten ból głowy. Myślę, że tak właśnie powinieneś to robić w dzisiejszych czasach.

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stephan
źródło
13
Zawsze staram się unikać instalowania czystych pakietów Pythona za pomocą menedżerów pakietów systemu operacyjnego - i radzę zrobić to samo. Ubuntu / Debian raz zepsuł pakiet setuptools i spowodował ból głowy, ponieważ ludzie nie mogli odinstalować pakietów za pomocą pip (z powodu ich zmian).
Hugo Tavares
używanie apt lub yum nie jest wystarczająco agnostyczne! Strategie na tej stronie są odpowiednie dla lokalnego rozwoju, ale proszę nie robić tego w przypadku wdrożeń.
ken
To samo tutaj, pip zabił się podczas aktualizacji do 1.3.1 na Macu, podczas gdy sam pip wspomniał, że nadal jest 1.2.1 ...
Anthony Liekens
@PiotrDobrogost zobacz komentarz powyżej - jest potrzebny w tym przypadku, aby virtualenv działał.
mchicago,
27

Miałem ten problem, kiedy używałem homebrew. Oto rozwiązanie z numeru 26900

python -m pip install --upgrade --force pip
Louis Cremen
źródło
Pomocne może być wypróbowanie tego zarówno z opcją --user, jak i bez niej (ta ostatnia wymaga sudo).
Ray
11

Spróbuj ponownie zainstalować za pomocą skryptu get-pip:

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

To pochodzi ze strony pip Github i zadziałało dla mnie.

pavan
źródło
7

Jeśli korzystasz z CentOS, upewnij się, że masz zainstalowany pakiet YUM „python-setuptools”

yum install python-setuptools

Naprawiłem to dla mnie.

Dave Lancea
źródło
6

Przyczyną problemu są często przestarzałe skrypty w bin(Linux) lubScripts podkatalogu (Windows). Wyjaśnię to na przykładzie problemu, który sam napotkałem.

Miałem virtualenv w wersji 1.10 zainstalowanej w moich pakietach witryny użytkownika (fakt, że znajduje się on w pakietach witryny użytkownika, a nie w pakietach witryny sytem, ​​nie ma tutaj znaczenia)

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

Po uaktualnieniu do wersji 1.11 otrzymałem następujący błąd:

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

Plik /home/users/pdobrogost/.local/bin/virtualenvwspomniany w komunikacie o błędzie wyglądał następująco:

#!/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')()
    ) 

Tam widzimy, że virtualenvskrypt nie został zaktualizowany i nadal wymaga wcześniej zainstalowanej wersji 1.10 virtualenv.
Teraz ponowna instalacja virtualenv w ten sposób

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...

nie pomaga (ani też pip install --user --upgrade --force-reinstall virtualenv), ponieważ skrypt /home/users/pdobrogost/.local/bin/virtualenvpozostaje niezmieniony.

Jedynym sposobem, w jaki mogłem to naprawić, było ręczne usunięcie skryptów virtualenv * z /home/users/pdobrogost/.local/bin/folderu i ponowne zainstalowanie virtualenv. Po tym nowo wygenerowane skrypty odwołują się do odpowiedniej wersji pakietu:

pdobrogost@host:~$ virtualenv --version
1.11
Piotr Dobrogost
źródło
6

Udało mi się rozwiązać ten problem w następujący sposób:

$ 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

Korzystam z następujących rzeczy (stan na 2 stycznia 2015 r.):

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
hernamesbarbara
źródło
5

Miałem podobny problem w OSx. Mówił mój ślad stosu

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

Następnie wykonałem następujące czynności

sudo pip install --upgrade setuptools

To rozwiązało problem. Mam nadzieję, że ktoś uzna to za przydatne.

Nabin
źródło
1
To rozwiązało mój problem w systemie Windows 10.
Mark Allen,
1
To rozwiązało problem z CentOS 6.
Dan Phillimore
2

W systemie Mac OS X (MBP) następujące (zaczerpnięte z innej odpowiedzi znalezionej w tym dokumencie) rozwiązały moje problemy:

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

Najwyraźniej główną przyczyną jest tutaj dodatkowa metoda instalacji Pythona (w moim przypadku Homebrew). Miejmy nadzieję, że osoby odpowiedzialne za skrypt pip mogą rozwiązać ten problem, ponieważ jest on nadal aktualny 2 lata po pierwszym zgłoszeniu do Stack Overflow.

Joe Johnson
źródło
1

Miałem ten problem, ponieważ zainstalowałem python / pip z dziwnym błędem ~/.pydistutils.cfg, którego nie pamiętałem. Usunąłem go, ponownie zainstalowałem (z pybrew) i wszystko było w porządku.

polm23
źródło
1

W moim przypadku (problem sam, ale inne pakiety) nie było zależności od wersji. Pomogła sekwencja deinstalacji pip i pip insstall.

rhoerbe
źródło