Jak naprawić błąd „ImportError: nie można zaimportować nazwy IncompleteRead”?

284

Kiedy próbuję zainstalować cokolwiek przy pomocy piplub pip3, otrzymuję:

$ sudo pip3 install python3-tk
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip3')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 356, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2476, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2190, in load
    ['__name__'])
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 61, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python3/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python3/dist-packages/pip/download.py", line 25, in <module>
    from requests.compat import IncompleteRead
ImportError: cannot import name 'IncompleteRead'

Mam system Ubuntu 14.10.

Jak mogę rozwiązać ten problem?

Martin Thoma
źródło
1
ewentualnie powiązane: stackoverflow.com/questions/27318535/…
cel
@cel: To nie jest duplikat, ponieważ dotyczy Windows i już to widziałem.
Martin Thoma,
Link w zaakceptowanej odpowiedzi wskazuje na narzędzie do śledzenia problemów ubuntu - więc ten problem nie wydaje się być specyficzny dla systemu Windows. Czy próbowałeś ponownie zainstalować Python zgodnie z OPsugestią?
cel
@cel Nieważne, właśnie znalazłem dość proste rozwiązanie.
Martin Thoma,
4
... co było co?
Jonathan Hartley,

Odpowiedzi:

433

Chociaż ta poprzednia odpowiedź może być przyczyną, ten wycinek działał dla mnie jako rozwiązanie (w Ubuntu 14.04):

Najpierw usuń pakiet z menedżera pakietów:

# apt-get remove python-pip

A następnie zainstaluj najnowszą wersję obok siebie:

# easy_install pip

(dzięki @Aufziehvogel, @JunchaoGu)

thomas.mc.work
źródło
10
Dla zainteresowanych:: --upgrade (-U)wymuś aktualizację (wyszukuje najnowsze wersje w PyPI)
Martin Thoma,
11
Trzeba tylko uważać, aby nie pomylić swojego natywnego menedżera pakietów (apt) przez instalację po stronie easy_install. Jeśli to możliwe, polecam apt-get remove pipi wtedy easy_install pip.
Aufziehvogel
16
@Aufziehvogelapt-get remove python-pip
eggonlegs
7
Zasadniczo ta odpowiedź jeszcze pogarsza sytuację.
hek2mgl
7
Dla mnie było to „apt-get remove python3-pip”, następnie „apt-get install python3-setuptools”, a następnie „easy_install3 pip”
Jason Pepas
85

Ten problem jest spowodowany niedopasowaniem między instalacją PIP a instalacją żądań.

Od requests.compat.IncompleteRead momentu żądania wersja 2.4.0 została usunięta . Starsze wersje pipa, np. Z lipca 2014 roku , nadal polegały IncompleteRead. W bieżącej wersji pipa importowanie IncompleteReadzostało usunięte.

Zatem winien jest albo:

  • żądania, aby zbyt szybko usunąć publiczny interfejs API
  • Ubuntu do zbyt wolnego aktualizowania pipa

Możesz rozwiązać ten problem, aktualizując pip za pośrednictwem Ubuntu (jeśli jest nowsza wersja) lub instalując pip oprócz Ubuntu.

Aufziehvogel
źródło
3
żądania instalacji pip -U, naprawiono problem.
jonincanada
2
@jonincanada jak mam uruchomić polecenie PIP, gdy PIP ulega awarii?
Peter,
80

Do naprawy pip3 (działał na Ubuntu 14.10):

easy_install3 -U pip
Branden Ghena
źródło
2
Działa to również w Ubuntu 14.04. Pamiętaj, że instaluje /usr/local/bin/pipto dla Python3; wcześniej pipuruchomiłem wersję Python 2. Naprawiłem to, wyłączając /usr/local/bin/pipcałkowicie, więc muszę jawnie uruchomić pip2lub pip3.
Nelson
3
na Debianie Jessiedla python2.7- po wyczyszczeniu pipa sudo apt-get purge python-requestsi ponownej instalacji za pomocą apt-get (pokazane w innej odpowiedzi), uruchomienie załatwiło sprawę easy_install -U pip.
MikeiLL,
1
Dla mnie bardziej niż cokolwiek innego; to jest poprawka, która zadziałała dla mnie.
Hamid
Działa jak marzenie!
Failed Scientist
33

Lub możesz usunąć wszystko requests.

Na przykład:

  • rm -rf /usr/local/lib/python2.7/dist-packages/requests*
Marius Stanca
źródło
To zadziałało dla mnie. Czy mogę wiedzieć, jaki jest stosunek żądań do instalacji Pythona-Pipa
Roselyn Verbo Domingo
Jeśli spojrzysz na requestsmoduł, zobaczysz, że ten moduł / lib służy do wysyłania żądań HTTP. pipmoduł potrzebuje requestsmodułu do pobrania pakietów z . And the usuniętych przez Ciebie `Python Package Index Index` ma inną wersję, która pipwymaga instalacji.
Marius Stanca
To również działało dla mnie; Wystąpił błąd podczas uruchamiania podręcznika Ansible, w którym pipmoduł instalował zależności od nowej / nowej instalacji Raspbian Jessie (dla Raspberry Pi). Po usunięciu pakietu dist dist żądań wszystko działa świetnie.
geerlingguy,
Pracował również dla mnie. Zaktualizowałem system operacyjny z wheezy do jessie, więc być może coś zepsuło. Trzy wyżej wymienione metody nie działały dla mnie na początku. Jednak jeśli użyłem metody 3, a następnie komendy rm -rf okazało się, że zadziałała.
Eamonn Kenny
spełniło to zadanie, jednocześnie utrzymując pip z repozytorium debian. wielkie dzięki!
Stefan
23

W systemie Ubuntu 14.04 rozwiązałem ten problem, używając skryptu bootstrap instalacji pip, jak opisano w dokumentacji

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

To dobre rozwiązanie dla środowiska programistycznego.

robert_b_clarke
źródło
To rozwiązuje problem. Szkoda, że ​​taki problem jest nadal otwarty w wersji LTS.
ganesshkumar
Miałem ten problem w Ubuntu 15 i wydaje się, że działa. Skrypt get-pip.py powiedział, że mam już pakiet, którego szukałem, ale zasugerował użycie sudo z flagą -H, która moim zdaniem działa.
Rick Henderson
17

Problemem jest moduł Python requests. Można to naprawić przez

$ sudo apt-get purge python-requests
[now requests and pip gets deinstalled]
$ sudo apt-get install python-requests python-pip

Jeśli masz ten problem z Python 3, musisz pisać python3zamiast python.

Martin Thoma
źródło
4
To absolutnie miłe rozwiązanie.
Tinker Sun
8
Fajnie wiedzieć purge. To wciąż nie instalowało działającej wersji pipa i kiedy próbowałem uruchomić from requests.compat import IncompleteReadw CLI Pythona, dał ten sam błąd. Jakie działanie DID działało po uruchomieniu powyższych poleceńeasy_install -U pip
MikeiLL
Jest to najlepsze rozwiązanie, które nie wymaga easy_install i nie psuje systemu, usuwając najpierw pip.
Marc Tamsky,
9

To powinno ci pomóc. Wykonaj te proste kroki.

Najpierw usuńmy pip, który jest już zainstalowany, aby nie spowodował żadnego błędu.

Otwórz terminal.

Wpisz: sudo apt-get remove python-pip

Usuwa pip, który jest już zainstalowany.

Metoda-1

Krok: 1 sudo easy_install -U pip

Zainstaluje PIP najnowszą wersję.

I zwróci swój adres: Zainstalowany /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

lub

Metoda 2

Krok: 1 przejdź do tego linku .

Krok: 2 Kliknij prawym przyciskiem myszy >> Zapisz jako .. o nazwie get-pip.py.

Krok: 3 użyj: cd, aby przejść do tego samego katalogu, co plik get-pip.py

Krok: 4 użyj: sudo python get-pip.py

Zainstaluje PIP najnowszą wersję.

lub

Metoda 3

Krok: 1 użyj: sudo apt-get install python-pip

Zainstaluje PIP najnowszą wersję.

kiok46
źródło
Czy możesz dodać trochę więcej szczegółów do swojej odpowiedzi?
abarisone
Pewnie. Ale gdzie się pomyliłeś?
kiok46
Dzięki usunąłem python-pip, a następnie użyłem easy_install. pip znów działa.
phansen
@phansen bez problemu (y)
kiok46
8

Po prostu uruchomienie easy_install -U piprozwiązało mój problem.

forzagreen
źródło
2
Dawno komentując, aby wyrazić moje zdumienie, że musiałem przedzierać się przez wątek ludzi, którzy potrafili czyścić różne programy, aby znaleźć to bardzo proste, pomocne rozwiązanie. Nie jestem pewien, jakie były wszystkie ograniczenia, kiedy pytanie zostało zadane, ale zadziałało .
mttpgn
5

Sprawdź, czy masz starszą wersję requestssiedzenia ~/.local/lib/python2.7/site-packages/i usuń ją, jeśli tak jest (zmień ścieżkę, aby odzwierciedlić wersję Pythona). To rozwiązało problem dla mnie.

ggll
źródło
5

Moja wersja pipa na Ubuntu sugeruje:

  pip install --upgrade pip
PhoebeB
źródło
4
Nie działało to dla mnie, ponieważ ten błąd całkowicie przeszkadza pipowi. Każde użycie (nawet pip --version) wyświetla cannot import name IncompleteReadbłąd, więc pip niestety nie może się zaktualizować
Abe Voelker
W rzeczywistości działa to na czystej instalacji Ubuntu 14.04 (bootstrap z minbase). Jakoś pipudaje się zaktualizować bez odwoływania się do requestsmodułu.
tylko
To nie zadziała ze złamaną pipą - dylemat kurczaka lub jajka.
Arnie97
4

W systemie Windows działało to z monitu administracyjnego:

  • Usunąć C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests
Jim Hunziker
źródło
Zainstalowany / ponownie zainstalowany python-requestsi python3-requestsktóry naprawił pip3. Popełnił błąd instalując python3.6beta, a następnie python3.6rc.
noobninja,
3

Próbowałem z każdą odpowiedzią avobe, ale nie mogłem.

Zrobiłem to i zadziałało

sudo apt-get purge python-virtualenv
sudo pip install pip -U

Następnie zainstalowałem virtualenv z pipem

sudo pip install virtualenv

Zbudowałem virtualenv, nad którym pracowałem, a pakiet został łatwo zainstalowany. Wejdź do virtualenv, używając source /bin/activate i spróbuj zainstalować pakiet, na przykład:

pip install terminado

Działa to dla mnie, chociaż korzystałem z Python2.7, a nie Python3

Bruno O. Sánchez
źródło
0

Sprawdź, czy interpreter Pythona żyje w którymkolwiek z okien terminala. Jeśli tak, zabij go i spróbuj, sudo pipktóry zadziałał dla mnie.

samsamara
źródło
0
  1. sudo apt-get usuń python-pip
  2. żądania sudo easy_install == 2.3.0
  3. sudo apt-get install python-pip
Miś
źródło
0

W przypadku CentOS użyłem tego i działało, użyj następujących poleceń:

sudo pip uninstall requests
sudo pip uninstall urllib3
sudo yum remove python-urllib3
sudo yum remove python-requests

(potwierdź, że wszystkie te biblioteki zostały usunięte)

sudo yum install python-urllib3
sudo yum install python-requests
JohnBegood
źródło