ฉันจะแก้ไข 'ImportError: ไม่สามารถนำเข้าชื่อ IncompleteRead' ได้อย่างไร


284

เมื่อฉันพยายามติดตั้งทุกอย่างด้วยpipหรือpip3ฉันจะได้รับ:

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

ฉันมีระบบ Ubuntu 14.10

ฉันจะแก้ไขปัญหานี้ได้อย่างไร


1
อาจเกี่ยวข้องกับ: stackoverflow.com/questions/27318535/…
cel

@cel: มันไม่ได้ซ้ำกันเพราะมันมีไว้สำหรับ windows และฉันได้เห็นแล้ว
Martin Thoma

ลิงก์ในคำตอบที่ได้รับการยอมรับชี้ไปที่ตัวติดตามปัญหาของอูบุนตู - ดังนั้นปัญหานี้ดูเหมือนจะไม่เฉพาะหน้าต่าง คุณลองติดตั้ง python ใหม่ตามที่OPแนะนำแล้วหรือยัง
cel

@cel ไม่เป็นไรฉันเพิ่งพบโซลูชันที่ค่อนข้างง่าย
Martin Thoma

4
... ซึ่งเป็นอะไร
Jonathan Hartley

คำตอบ:


433

ในขณะที่คำตอบก่อนหน้านี้อาจเป็นเหตุผลที่ snipped นี้ทำงานสำหรับฉันเป็นวิธีแก้ปัญหา (ในUbuntu 14.04):

ก่อนอื่นให้ลบแพ็คเกจออกจากเครื่องมือจัดการแพ็คเกจ:

# apt-get remove python-pip

จากนั้นติดตั้งเวอร์ชันล่าสุดเคียงข้างกัน:

# easy_install pip

(ขอบคุณ @Aufziehvogel, @JunchaoGu)


10
สำหรับผู้ที่สนใจ:: --upgrade (-U)กำลังอัปเกรด (ค้นหา PyPI สำหรับรุ่นล่าสุด)
Martin Thoma

11
คุณเพียงแค่จะต้องระมัดระวังไม่ให้เกิดความสับสนผู้จัดการแพคเกจของคุณแม่ (ฉลาด) easy_installโดยด้านข้างติดตั้งผ่าน ถ้าเป็นไปได้ผมอยากแนะนำให้ไปแล้วapt-get remove pip easy_install pip
Aufziehvogel

16
@Aufziehvogelapt-get remove python-pip
eggonlegs

7
โดยทั่วไปคำตอบนี้ทำให้สถานการณ์ยิ่งแย่ลง
hek2mgl

7
สำหรับฉันนี่คือ 'apt-get remove python3-pip' ตามด้วย 'apt-get install python3-setuptools' ตามด้วย 'easy_install3 pip'
Jason Pepas

85

ปัญหานี้เกิดจากการที่ไม่ตรงกันระหว่างการติดตั้ง pip และการติดตั้งคำขอของคุณ

ในฐานะของการร้องขอเวอร์ชัน 2.4.0 ได้ถูกลบออกrequests.compat.IncompleteRead รุ่นเก่าของ pip เช่นจากกรกฎาคม 2014IncompleteReadยังคงเป็นที่พึ่ง ในเวอร์ชันปัจจุบันของ pip การอิมพอร์ตIncompleteReadถูกลบออก

ดังนั้นสิ่งที่ควรตำหนิคือ:

  • คำขอสำหรับการลบ API สาธารณะเร็วเกินไป
  • Ubuntu สำหรับการอัพเดท pip ช้าเกินไป

คุณสามารถแก้ปัญหานี้ได้โดยการอัปเดต pip ผ่าน Ubuntu (ถ้ามีเวอร์ชั่นใหม่กว่า) หรือโดยติดตั้ง pip นอกเหนือจาก Ubuntu


3
การร้องขอการติดตั้ง pip - U แก้ไขปัญหา
jonincanada

2
@jonincanada ฉันควรจะเรียกใช้คำสั่ง pip อย่างไรเมื่อ pip ขัดข้อง?
ปีเตอร์

80

สำหรับการแก้ไข pip3 (ทำงานบน Ubuntu 14.10):

easy_install3 -U pip

2
ใช้งานได้ใน Ubuntu 14.04 เช่นกัน ระวังการติดตั้ง/usr/local/bin/pipนี้สำหรับ a Python3 ก่อนหน้านี้pipรันเวอร์ชัน Python 2 ฉันคงได้โดยการปิดการใช้งาน/usr/local/bin/pipทั้งหมดดังนั้นฉันจะต้องมีการทำงานอย่างชัดเจนหรือpip2 pip3
เนลสัน

3
บนเดเบียนJessieสำหรับpython2.7- หลังจากกวาดล้าง pip ด้วยsudo apt-get purge python-requestsและติดตั้งใหม่ด้วย apt-get (แสดงในคำตอบอื่น) การเรียกใช้easy_install -U pipทำเคล็ดลับ
MikeiLL

1
สำหรับตัวเองมากกว่าอะไร; นี่คือการแก้ไขที่ใช้งานได้สำหรับฉัน
ฮามิด

ทำงานเหมือนจับใจ!
นักวิทยาศาสตร์ล้มเหลว

33

requestsหรือคุณสามารถลบทั้งหมด

ตัวอย่างเช่น:

  • rm -rf /usr/local/lib/python2.7/dist-packages/requests*

สิ่งนี้ใช้ได้สำหรับฉัน ฉันขอทราบความสัมพันธ์ของคำร้องขอการติดตั้ง python-pip ได้อย่างไร
Roselyn Verbo Domingo

หากคุณมองหาrequestsโมดูลคุณจะเห็นโมดูล / lib นี้ใช้สำหรับส่งคำขอ HTTP pipmodule ต้องการrequestsโมดูลเพื่อดาวน์โหลดแพ็คเกจจาก `Python Package Index . And the ร้องขอ 'ถูกลบโดยคุณมีเวอร์ชั่นอื่นที่pipจำเป็นต้องติดตั้ง
Marius Stanca

สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน; ฉันพบข้อผิดพลาดเมื่อเรียกใช้เพลย์บุ๊ค Ansible ที่ใช้pipโมดูลเพื่อติดตั้งการพึ่งพาการติดตั้ง Raspbian Jessie ใหม่ / ใหม่ (สำหรับ Raspberry Pi) หลังจากลบแพ็คเกจ dist คำขอทุกอย่างใช้งานได้ดี
geerlingguy

ทำงานให้ฉันด้วย ฉันอัพเกรดระบบปฏิบัติการของฉันจากเสียงฮืด ๆ เป็นเจสซีดังนั้นอาจมีบางอย่างผิดปกติ วิธีการสามข้อที่กล่าวข้างต้นไม่ได้ผลสำหรับฉันก่อน อย่างไรก็ตามถ้าฉันใช้วิธีที่ 3 จากนั้นคำสั่ง rm -rf ฉันพบว่ามันใช้งานได้
Eamonn Kenny

สิ่งนี้ได้งานในขณะที่ยังคงรักษา pip จาก debian repo ขอบคุณมาก!
สเตฟาน

23

ใน Ubuntu 14.04 ฉันแก้ไขได้โดยใช้สคริปต์ bootstrap การติดตั้ง pip ตามที่อธิบายไว้ในเอกสารประกอบ

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

นั่นเป็นทางออกที่ตกลงสำหรับสภาพแวดล้อมการพัฒนา


วิธีนี้จะช่วยแก้ปัญหา น่าเสียดายที่ปัญหาดังกล่าวยังคงเปิดอยู่ในรุ่น LTS
ganesshkumar

ฉันมีปัญหานี้ใน Ubuntu 15 และดูเหมือนว่าจะใช้งานได้ สคริปต์ get-pip.py บอกว่าฉันมีแพ็คเกจที่ฉันค้นหาอยู่แล้ว แต่แนะนำให้ฉันใช้ sudo ด้วยแฟล็ก -H ซึ่งฉันเชื่อว่าใช้งานได้
Rick Henderson

17

requestsปัญหาคือโมดูลหลาม มันสามารถแก้ไขได้โดย

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

ถ้าคุณมีปัญหานี้กับงูหลาม 3 คุณต้องเขียนแทนpython3python


4
มันเป็นทางออกที่ดีอย่างยิ่ง
ทิงเกอร์ซัน

8
purgeปรู้เกี่ยวกับ นี่ยังไม่ได้ติดตั้ง pip รุ่นใช้งานได้และเมื่อฉันพยายามเรียกใช้from requests.compat import IncompleteReadใน python CLI มันให้ข้อผิดพลาดเดียวกัน DID ทำงานอย่างไรหลังจากเรียกใช้คำสั่งข้างต้นแล้วทำงานeasy_install -U pip
MikeiLL

นี่เป็นทางออกที่ดีที่สุดที่ไม่เกี่ยวข้องกับ easy_install และไม่ทำให้ระบบของคุณชะงักโดยลบ pip ก่อน
Marc Tamsky

9

สิ่งนี้น่าจะเหมาะกับคุณ ทำตามขั้นตอนง่าย ๆ เหล่านี้

อันดับแรกให้ลบ pip ที่ติดตั้งไว้แล้วเพื่อไม่ให้เกิดข้อผิดพลาด

เปิด Terminal

ประเภท: sudo apt-get remove python-pip

จะลบ pip ที่ติดตั้งไว้แล้ว

วิธีที่ 1

ขั้นตอน: 1 sudo easy_install -U pip

มันจะติดตั้ง pip เวอร์ชั่นล่าสุด

และจะส่งคืนที่อยู่: ติดตั้ง /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

หรือ

วิธีที่ 2

ขั้นตอนที่ 1ไปที่ลิงค์นี้

ขั้นตอนที่ 2คลิกขวา >> บันทึกเป็น .. พร้อมชื่อ get-pip.py

ขั้นตอนที่ 3ใช้: cd เพื่อไปที่ไดเรกทอรีเดียวกันกับไฟล์ get-pip.py ของคุณ

ขั้นตอนที่ 4: การใช้งาน: sudo python get-pip.py

มันจะติดตั้ง pip เวอร์ชั่นล่าสุด

หรือ

วิธีที่ 3

ขั้นตอนที่ 1:ใช้: sudo apt-get install python-pip

มันจะติดตั้ง pip เวอร์ชั่นล่าสุด


คุณช่วยเพิ่มรายละเอียดเล็กน้อยในคำตอบของคุณได้ไหม?
abarisone

แน่ใจ แต่คุณสับสนที่ไหน
kiok46

ขอบคุณฉันลบ python-pip แล้วใช้ easy_install pip ทำงานอีกครั้ง
phansen

@phansen ไม่มีปัญหา (y)
kiok46

8

เพียงแค่เรียกใช้easy_install -U pipแก้ไขปัญหาของฉัน


2
แสดงความคิดเห็นเก่าแก่เพื่อแสดงความประหลาดใจของฉันที่ฉันต้องลุยผ่านคนจำนวนมากที่ได้รับการกวาดล้างโปรแกรมต่าง ๆ เพียงเพื่อหาวิธีแก้ปัญหาที่ง่ายและมีประโยชน์นี้ ไม่แน่ใจว่าข้อ จำกัด ทั้งหมดมีเมื่อถามคำถาม แต่สิ่งนี้ได้ผล
mttpgn

5

ตรวจสอบว่าคุณมีเวอร์ชั่นที่เก่ากว่าrequestsนั่งอยู่ในนั้น~/.local/lib/python2.7/site-packages/และลบออกถ้าเป็นกรณี (เปลี่ยนเส้นทางเพื่อแสดงเวอร์ชั่นของงูหลาม) วิธีนี้แก้ไขปัญหาสำหรับฉัน


5

pip เวอร์ชันของฉันใน Ubuntu แนะนำ:

  pip install --upgrade pip

4
ไม่ได้ผลสำหรับฉันเนื่องจาก pip มีข้อผิดพลาดนี้เต็มไปหมด การใช้งานใด ๆ (แม้pip --version) แสดงcannot import name IncompleteReadข้อผิดพลาดดังนั้น pip ไม่น่าเศร้าที่จะอัพเกรดตัวเอง
Abe Voelker

จริงๆแล้วมันใช้งานได้กับการติดตั้ง Ubuntu 14.04 (bootstrap จากminbase) อย่างใดpipจัดการเพื่อปรับปรุงตัวเองโดยไม่ต้องอ้างอิงrequestsโมดูล
ony

สิ่งนี้จะไม่สามารถใช้งานได้กับ pip ที่แตกหัก - ภาวะที่กลืนไม่เข้าคายไม่ออกไก่หรือไข่
Arnie97

4

ใน Windows สิ่งนี้ได้จากพรอมต์การดูแลระบบ:

  • ลบ C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests

ติดตั้ง / ติดตั้งใหม่python-requestsและpython3-requestsแก้ไข pip3 ใด ได้ทำผิดพลาดในการติดตั้ง python3.6beta แล้ว python3.6rc
noobninja

3

ฉันพยายามทุกคำตอบด้วย avobe แต่ไม่สามารถทำได้

ทำสิ่งนี้และทำงานได้ดี

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

หลังจากนั้นฉันเพิ่งติดตั้ง virtualenv ด้วย pip

sudo pip install virtualenv

ฉันสร้าง virtualenv ที่ฉันทำงานและติดตั้งแพ็กเกจได้อย่างง่ายดาย รับ virtualenv โดยใช้source /bin/activate และลองติดตั้งแพคเกจของคุณตัวอย่างเช่น:

pip install terminado

มันใช้งานได้สำหรับฉันแม้ว่าฉันจะใช้ python2.7 ไม่ใช่ python3 ก็ตาม


0

ตรวจสอบว่ามีล่ามไพ ธ อนอยู่หรือไม่ในหน้าต่างเทอร์มินัลใด ๆ ถ้าเป็นเช่นนั้นให้ฆ่ามันและลองใช้วิธีsudo pipใดที่เหมาะกับฉัน




0

สำหรับ CentOS ฉันใช้สิ่งนี้และใช้งานได้โปรดใช้คำสั่งต่อไปนี้:

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

(ยืนยันว่าลบไลบรารีเหล่านั้นทั้งหมดแล้ว)

sudo yum install python-urllib3
sudo yum install python-requests
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.