Bagaimana cara saya memperbaiki 'ImportError: tidak dapat mengimpor nama IncompleteRead'?

284

Ketika saya mencoba menginstal sesuatu dengan pipatau pip3, saya mendapatkan:

$ 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'

Saya memiliki sistem Ubuntu 14.10.

Bagaimana saya bisa memperbaiki masalah ini?

Martin Thoma
sumber
@cel: Ini bukan duplikat, karena ini untuk windows dan saya sudah melihatnya.
Martin Thoma
Tautan di jawaban yang diterima menunjuk ke pelacak masalah ubuntu - jadi masalah ini sepertinya tidak spesifik untuk windows. Sudahkah Anda mencoba menginstal ulang python seperti yang OPdisarankan?
cel
@cel Sudahlah, saya baru saja menemukan solusi yang cukup sederhana.
Martin Thoma
4
... yang mana?
Jonathan Hartley

Jawaban:

433

Meskipun jawaban sebelumnya ini mungkin menjadi alasannya, potongan ini berfungsi untuk saya sebagai solusi Ubuntu 14.04:

Pertama-tama hapus paket dari manajer paket:

# apt-get remove python-pip

Dan kemudian instal versi terbaru berdampingan:

# easy_install pip

(terima kasih kepada @Aufziehvogel, @JunchaoGu)

thomas.mc.work
sumber
10
Untuk yang berminat:: --upgrade (-U)peningkatan paksa (mencari PyPI untuk versi terbaru)
Martin Thoma
11
Anda hanya harus berhati-hati, agar tidak membingungkan manajer paket asli Anda (apt) dengan menginstal secara bersamaan easy_install. Jika memungkinkan, saya akan merekomendasikannya apt-get remove pipdan kemudian easy_install pip.
Aufziehvogel
16
@Aufziehvogelapt-get remove python-pip
eggonlegs
7
Pada dasarnya jawaban ini membuat situasinya semakin buruk.
hek2mgl
7
Bagi saya, ini adalah 'apt-get remove python3-pip', diikuti oleh 'apt-get install python3-setuptools', diikuti oleh 'easy_install3 pip'
Jason Pepas
85

Masalah ini disebabkan oleh ketidakcocokan antara instalasi pip Anda dan instalasi permintaan Anda.

Pada permintaan versi 2.4.0 requests.compat.IncompleteRead telah dihapus . Versi pip yang lebih lama, misalnya mulai Juli 2014 , masih diandalkan IncompleteRead. Dalam versi pip saat ini, impor IncompleteReadtelah dihapus.

Jadi yang harus disalahkan adalah:

  • permintaan, untuk menghapus API publik terlalu cepat
  • Ubuntu untuk memperbarui pip terlalu lambat

Anda dapat mengatasi masalah ini, dengan memperbarui pip melalui Ubuntu (jika ada versi yang lebih baru) atau dengan menginstal pip selain dari Ubuntu.

Aufziehvogel
sumber
3
permintaan instalasi pip -U, memperbaiki masalah ini.
jonincanada
2
@jonincanada bagaimana saya bisa menjalankan perintah pip ketika pip crash?
Peter
80

Untuk memperbaiki pip3 (bekerja di Ubuntu 14.10):

easy_install3 -U pip
Branden Ghena
sumber
2
Ini berfungsi di Ubuntu 14.04 juga. Sadarilah ini menginstal /usr/local/bin/pipyang untuk Python3; sebelumnya pipmenjalankan versi Python 2. Saya memperbaikinya dengan menonaktifkan /usr/local/bin/pipsepenuhnya sehingga saya harus menjalankan pip2atau pip3.
Nelson
3
pada Debian Jessieuntuk python2.7- setelah membersihkan pip dengan sudo apt-get purge python-requestsdan menginstal ulang dengan apt-get (ditampilkan pada jawaban lain), menjalankan easy_install -U pipmelakukan trik.
MikeiLL
1
Bagi saya lebih dari apa pun; ini adalah perbaikan yang berhasil untuk saya.
Hamid
Bekerja seperti pesona!
Failed Scientist
33

Atau Anda bisa menghapus semua requests.

Sebagai contoh:

  • rm -rf /usr/local/lib/python2.7/dist-packages/requests*
Marius Stanca
sumber
Ini berhasil untuk saya. Bolehkah saya tahu apa hubungan permintaan untuk pemasangan python-pip
Roselyn Verbo Domingo
Jika Anda melihat ke requestsmodul, Anda akan melihat modul ini / lib digunakan untuk mengirim permintaan HTTP. pipmodul membutuhkan requestsmodul untuk mengunduh paket dari ` . And the Permintaan Indeks Paket Python` yang dihapus oleh Anda memiliki versi lain yang pipperlu diinstal.
Marius Stanca
Ini juga bekerja untuk saya; Saya mengalami kesalahan saat menjalankan buku pedoman Ansible yang menggunakan pipmodul untuk menginstal dependensi pada instalasi baru / baru dari Raspbian Jessie (untuk Raspberry Pi). Setelah menghapus paket permintaan dist, semuanya berfungsi dengan baik.
geerlingguy
Bekerja untuk saya juga. Saya memutakhirkan OS saya dari wheezy ke jessie, jadi mungkin ada yang rusak. Tiga metode yang disebutkan di atas tidak berhasil untuk saya terlebih dahulu. Namun jika saya menggunakan metode 3 dan kemudian perintah rm -rf saya menemukan itu berhasil.
Eamonn Kenny
ini berhasil, sambil tetap menjaga pip dari repo debian. Terima kasih banyak!
Stefan
23

Pada Ubuntu 14.04 saya menyelesaikan ini dengan menggunakan skrip bootstrap instalasi pip, seperti yang dijelaskan dalam dokumentasi

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

Itu solusi OK untuk lingkungan pengembangan.

robert_b_clarke
sumber
Ini menyelesaikan masalah. Sayang sekali masalah seperti itu masih terbuka pada versi LTS.
ganesshkumar
Saya punya masalah ini di Ubuntu 15 dan tampaknya berfungsi. Script get-pip.py mengatakan saya sudah memiliki paket yang saya cari tetapi menyarankan saya menggunakan sudo dengan flag -H yang saya percaya berfungsi.
Rick Henderson
17

Masalahnya adalah modul Python requests. Itu bisa diperbaiki oleh

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

Jika Anda memiliki masalah dengan Python 3 ini, Anda harus menulis python3alih-alih python.

Martin Thoma
sumber
4
Ini benar-benar solusi yang bagus.
Tinker Sun
8
Keren tahu tentang purge. Ini masih tidak menginstal versi pip yang berfungsi dan ketika saya mencoba untuk menjalankan from requests.compat import IncompleteReaddi python CLI itu memberikan kesalahan yang sama. Apa yang DID bekerja, setelah menjalankan perintah di atas, berjalaneasy_install -U pip
MikeiLL
Ini adalah solusi terbaik yang tidak melibatkan easy_install, dan tidak merusak sistem Anda dengan menghapus pip terlebih dahulu.
Marc Tamsky
9

Ini seharusnya bekerja untuk Anda. Ikuti langkah-langkah sederhana ini.

Pertama, mari kita hapus pip yang sudah diinstal sehingga tidak akan menyebabkan kesalahan.

Buka Terminal.

Ketik: sudo apt-get remove python-pip

Ini menghapus pip yang sudah diinstal.

Metode-1

Langkah 1 sudo easy_install -U pip

Ini akan menginstal versi pip terbaru.

Dan akan mengembalikan alamatnya: Terpasang /usr/local/lib/python2.7/dist-packages/pip-6.1.1.1py-.7.7

atau

Metode-2

Langkah: 1 buka tautan ini .

Langkah: 2 Klik kanan >> Simpan sebagai .. dengan nama get-pip.py.

Langkah: 3 gunakan: cd untuk pergi ke direktori yang sama dengan file get-pip.py Anda

Langkah: 4 gunakan: sudo python get-pip.py

Ini akan menginstal versi pip terbaru.

atau

Metode-3

Langkah 1 gunakan: sudo apt-get install python-pip

Ini akan menginstal versi pip terbaru.

kiok46
sumber
Bisakah Anda menambahkan sedikit lebih detail pada jawaban Anda?
abarisone
Tentu. Tapi di mana Anda bingung?
kiok46
Terima kasih saya menghapus python-pip dan kemudian menggunakan easy_install. pip bekerja lagi.
phansen
@phansen tidak masalah (y)
kiok46
8

Cukup menjalankan easy_install -U pipmenyelesaikan masalah saya.

forzagreen
sumber
2
Mengomentari dahulu untuk mengungkapkan keheranan saya bahwa saya harus mengarungi thread orang yang tepat untuk membersihkan berbagai software hanya untuk menemukan solusi yang sangat sederhana dan bermanfaat ini. Tidak yakin apa semua batasan yang ada ketika pertanyaan diajukan, tetapi ini berhasil .
mttpgn
5

Periksa apakah Anda memiliki versi lama requestsduduk di Anda ~/.local/lib/python2.7/site-packages/dan menghapusnya jika itu terjadi (ubah jalur untuk mencerminkan versi python Anda). Ini memecahkan masalah bagi saya.

gg
sumber
5

Versi pip saya di ubuntu menyarankan:

  pip install --upgrade pip
PhoebeB
sumber
4
Tidak berfungsi untuk saya karena pip benar-benar tersinggung oleh kesalahan ini. Setiap penggunaan ( pip --versiondatar) menampilkan cannot import name IncompleteReadkesalahan, jadi pip sayangnya tidak dapat memperbarui sendiri
Abe Voelker
Sebenarnya ini berfungsi pada instalasi bersih Ubuntu 14.04 (bootstrap dari minbase). Entah bagaimana pipberhasil memperbarui sendiri tanpa merujuk requestsmodul.
ony
Ini tidak akan bekerja dengan pip yang rusak - dilema ayam atau telur.
Arnie97
4

Di Windows, ini berfungsi dari konfirmasi administratif:

  • Menghapus C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests
Jim Hunziker
sumber
Dipasang / diinstal ulang python-requestsdan python3-requestsyang diperbaiki pip3. Telah membuat kesalahan dengan menginstal python3.6beta kemudian python3.6rc.
noobninja
3

Saya mencoba dengan setiap jawaban avobe, tetapi tidak berhasil.

Lakukan ini dan berhasil

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

Setelah itu saya baru saja menginstal virtualenv dengan pip

sudo pip install virtualenv

Saya membangun virtualenv yang sedang saya kerjakan dan paket itu diinstal dengan mudah. Masuk ke virtualenv dengan menggunakan source /bin/activate dan mencoba menginstal paket Anda, misalnya:

pip install terminado

Ini bekerja untuk saya, meskipun saya menggunakan python2.7 bukan python3

Bruno O. Sánchez
sumber
0

Periksa apakah ada juru bahasa python yang hidup di salah satu jendela terminal. Kalau begitu bunuh saja dan coba sudo pipyang berhasil untuk saya.

samsamara
sumber
0
  1. sudo apt-get remove python-pip
  2. sudo easy_install permintaan == 2.3.0
  3. sudo apt-get install python-pip
teddy
sumber
0

Untuk CentOS saya menggunakan ini dan berhasil silakan gunakan perintah berikut:

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

(konfirmasi bahwa semua perpustakaan itu telah dihapus)

sudo yum install python-urllib3
sudo yum install python-requests
JohnBegood
sumber