Làm cách nào để sửa 'NhậpError: không thể nhập tên IncompleteRead'?


284

Khi tôi cố gắng cài đặt bất cứ thứ gì có piphoặc pip3, tôi nhận được:

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

Tôi có hệ thống Ubuntu 14.10.

Làm thế nào tôi có thể khắc phục vấn đề này?



@cel: Đây không phải là một bản sao, vì nó dành cho windows và tôi đã thấy điều đó.
Martin Thoma

Liên kết trong câu trả lời được chấp nhận chỉ ra trình theo dõi vấn đề của Ubuntu - vì vậy vấn đề này dường như không phải là cửa sổ cụ thể. Bạn đã thử cài đặt lại python như OPđề xuất?
cel

@cel Đừng bận tâm, tôi chỉ tìm thấy một giải pháp khá đơn giản.
Martin Thoma

4
... đó là cái gì?
Jonathan Hartley

Câu trả lời:


433

Trong khi câu trả lời trước đây có thể là lý do, thì đoạn trích này hoạt động với tôi như một giải pháp (trong Ubuntu 14.04):

Đầu tiên xóa gói khỏi trình quản lý gói:

# apt-get remove python-pip

Và sau đó cài đặt phiên bản mới nhất bên cạnh:

# easy_install pip

(cảm ơn @Aufziehvogel, @JunchaoGu)


10
Dành cho những người quan tâm :: --upgrade (-U)lực lượng nâng cấp (tìm kiếm PyPI cho các phiên bản mới nhất)
Martin Thoma

11
Bạn chỉ cần cẩn thận, không nhầm lẫn trình quản lý gói gốc (apt) của bạn bằng cách cài đặt bên cạnh easy_install. Nếu có thể, tôi khuyên bạn nên apt-get remove pipvà sau đó easy_install pip.
Aufziehvogel

16
@Aufziehvogelapt-get remove python-pip
eggonlegs

7
Về cơ bản câu trả lời này làm cho tình hình thậm chí còn tồi tệ hơn.
hek2mgl

7
Đối với tôi, đây là 'apt-get remove python3-pip', tiếp theo là 'apt-get install python3-setuptools', tiếp theo là 'easy_install3 pip'
Jason Pepas

85

Vấn đề này là do sự không phù hợp giữa cài đặt pip và cài đặt yêu cầu của bạn.

Theo yêu cầu phiên bản 2.4.0 requests.compat.IncompleteRead đã bị xóa . Các phiên bản cũ hơn của pip, ví dụ từ tháng 7 năm 2014 , vẫn dựa vào IncompleteRead. Trong phiên bản hiện tại của pip, việc nhập khẩu IncompleteReadđã bị xóa.

Vì vậy, một trong những điều đáng trách là:

  • yêu cầu, để xóa API công khai quá nhanh
  • Ubuntu để cập nhật pip quá chậm

Bạn có thể giải quyết vấn đề này, bằng cách cập nhật pip qua Ubuntu (nếu có phiên bản mới hơn) hoặc bằng cách cài đặt pip ngoài Ubuntu.


3
Yêu cầu cài đặt pip -U, đã khắc phục sự cố.
jonincanada 21/07/2015

2
@jonincanada Tôi phải chạy lệnh pip như thế nào khi pip gặp sự cố?
Peter

80

Để sửa lỗi pip3 (hoạt động trên Ubuntu 14.10):

easy_install3 -U pip

2
Điều này cũng hoạt động trong Ubuntu 14.04. Lưu ý rằng cài đặt /usr/local/bin/pipnày dành cho Python3; trước đây pipđã chạy phiên bản Python 2. Tôi đã sửa nó bằng cách vô hiệu hóa /usr/local/bin/piphoàn toàn để tôi phải chạy rõ ràng pip2hoặc pip3.
Nelson

3
trên Debian Jessiecho python2.7- sau khi thanh lọc pip bằng sudo apt-get purge python-requestsvà cài đặt lại bằng apt-get (hiển thị trên một câu trả lời khác), việc chạy easy_install -U pipđã thực hiện thủ thuật.
MikeiLL

1
Đối với bản thân tôi hơn bất cứ điều gì; Đây là bản sửa lỗi làm việc cho tôi.
Hamid

Hoạt động như một lá bùa!
Nhà khoa học thất bại

33

Hoặc bạn có thể loại bỏ tất cả requests.

Ví dụ:

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

Điều này làm việc cho tôi. Tôi có thể biết mối quan hệ của các yêu cầu cài đặt python-pip là gì
Roselyn Verbo Domingo

Nếu bạn tìm đến requestsmô-đun, bạn sẽ thấy mô-đun / lib này được sử dụng để gửi yêu cầu HTTP. pipmô-đun cần requestsmô-đun để tải xuống các gói từ ` . And the Yêu cầu chỉ mục gói Python được xóa bởi bạn có một phiên bản khác pipcần phải cài đặt.
Marius Stanca

Cái này cũng có tác dụng với tôi; Tôi đã gặp phải lỗi khi chạy một Playbook Ansible sử dụng pipmô-đun để cài đặt các phụ thuộc vào bản cài đặt mới / mới của Raspbian Jessie (cho Raspberry Pi). Sau khi xóa gói dist request, mọi thứ đều hoạt động tốt.
geummingguy

Làm việc cho tôi cũng được. Tôi đã nâng cấp hệ điều hành của mình từ wheezy lên jessie, vì vậy có thể đã phá vỡ một cái gì đó. Ba phương pháp nêu trên không làm việc cho tôi trước hết. Tuy nhiên nếu tôi sử dụng phương thức 3 và sau đó lệnh rm -rf tôi thấy rằng nó đã hoạt động.
Eamonn Kenny

điều này đã làm công việc, trong khi vẫn giữ pip từ repo debian. cảm ơn rất nhiều!
Stefan

23

Trên Ubuntu 14.04, tôi đã giải quyết vấn đề này bằng cách sử dụng tập lệnh bootstrap cài đặt pip, như được mô tả trong tài liệu

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

Đó là một giải pháp OK cho môi trường phát triển.


Điều này giải quyết vấn đề. Quá tệ là một vấn đề như vậy vẫn còn mở trên phiên bản LTS.
ganesshkumar

Tôi gặp vấn đề này trong Ubuntu 15 và nó dường như đang hoạt động. Kịch bản get-pip.py nói rằng tôi đã có gói tôi đang tìm nhưng đề nghị tôi sử dụng sudo với cờ -H mà tôi tin là đang hoạt động.
Rick Henderson

17

Vấn đề là mô-đun Python requests. Nó có thể được sửa bởi

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

Nếu bạn gặp vấn đề này với Python 3, bạn phải viết python3thay vì python.


4
Đó hoàn toàn là một giải pháp tốt.
Tinker Sun

8
Thật tuyệt khi biết về purge. Điều này vẫn không cài đặt một phiên bản hoạt động của pip và khi tôi cố chạy from requests.compat import IncompleteReadtrong CLI python thì nó cũng bị lỗi tương tự. Những gì DID hoạt động, sau khi chạy các lệnh trên, đã chạyeasy_install -U pip
MikeiLL

Đây là giải pháp tốt nhất không liên quan đến easy_install và không làm hỏng hệ thống của bạn bằng cách xóa pip trước.
Marc Tamsky

9

Điều này sẽ làm việc cho bạn. Thực hiện theo các bước đơn giản.

Trước tiên, hãy xóa pip đã được cài đặt để nó không gây ra lỗi.

Mở Terminal.

Loại: sudo apt-get loại bỏ python-pip

Nó loại bỏ pip đã được cài đặt.

Phương pháp-1

Bước: 1 sudo easy_install -U pip

Nó sẽ cài đặt pip phiên bản mới nhất.

Và sẽ trả về địa chỉ của nó: Đã cài đặt /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

hoặc là

Phương pháp-2

Bước: 1 đi đến liên kết này .

Bước: 2 Nhấp chuột phải >> Lưu dưới dạng .. với tên get-pip.py.

Bước: 3 sử dụng: cd để đi đến cùng thư mục với tệp get-pip.py của bạn

Bước: 4 sử dụng: sudo python get-pip.py

Nó sẽ cài đặt pip phiên bản mới nhất.

hoặc là

Phương pháp 3

Bước: 1 sử dụng: sudo apt-get install python-pip

Nó sẽ cài đặt pip phiên bản mới nhất.


Bạn có thể thêm một chút chi tiết cho câu trả lời của bạn?
abarisone

Chắc chắn rồi. Nhưng bạn đã nhầm lẫn ở đâu?
kiok46

Cảm ơn tôi đã gỡ bỏ python-pip và sau đó sử dụng easy_install. Pip đang hoạt động trở lại.
phansen

@phansen không có vấn đề gì (y)
kiok46

8

Đơn giản chỉ cần chạy easy_install -U pipgiải quyết vấn đề của tôi.


2
Bình luận cũ để bày tỏ sự kinh ngạc của tôi rằng tôi phải lội qua một chuỗi những người có khả năng thanh trừng các phần mềm khác nhau chỉ để tìm giải pháp rất đơn giản, hữu ích này. Không chắc chắn tất cả những hạn chế đã có khi câu hỏi được hỏi, nhưng điều này đã làm việc .
mttpgn

5

Kiểm tra thời tiết bạn có một phiên bản cũ của requestsngồi của bạn ~/.local/lib/python2.7/site-packages/và loại bỏ nó nếu nó là trường hợp (thay đổi đường dẫn đến phản ánh phiên bản python của bạn). Điều này đã giải quyết vấn đề cho tôi.


5

Phiên bản pip của tôi trên Ubuntu cho thấy:

  pip install --upgrade pip

4
Không làm việc cho tôi vì pip hoàn toàn bị ảnh hưởng bởi lỗi này. Bất kỳ việc sử dụng (chẵn pip --version) nào cũng hiển thị cannot import name IncompleteReadlỗi, vì vậy, thật đáng buồn là không thể tự nâng cấp
Abe Voelker

Trên thực tế, điều này hoạt động trên một bản cài đặt sạch Ubuntu 14.04 (bootstrap từ minbase). Bằng cách nào đó pipquản lý để tự cập nhật mà không cần requestsmô-đun tham khảo .
ony

Điều này sẽ không hoạt động với một pip bị hỏng - một vấn đề nan giải gà hay trứng.
Arnie97

4

Trong Windows, điều này hoạt động từ một dấu nhắc hành chính:

  • Xóa bỏ C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests

Đã cài đặt / cài đặt lại python-requestspython3-requestsđã sửa lỗi pip3. Đã mắc lỗi cài đặt python3.6beta rồi python3.6rc.
noobninja

3

Tôi đã cố gắng với mọi câu trả lời, nhưng không thể thực hiện được.

Đã làm điều này và làm việc

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

Sau đó tôi mới cài đặt virtualenv với pip

sudo pip install virtualenv

Tôi đã xây dựng virtualenv mà tôi đang làm việc và gói được cài đặt dễ dàng. Hãy vào virtualenv bằng cách sử dụng source /bin/activate và thử cài đặt gói của bạn, ví dụ:

pip install terminado

Nó hoạt động với tôi, mặc dù tôi đang sử dụng python2.7 chứ không phải python3


0

Kiểm tra xem có trình thông dịch python còn sống trong bất kỳ cửa sổ đầu cuối nào không. Nếu vậy hãy giết nó và thử sudo piplàm việc cho tôi.


0
  1. sudo apt-get loại bỏ python-pip
  2. sudo easy_install request == 2.3.0
  3. sudo apt-get cài đặt python-pip


0

Đối với CentOS tôi đã sử dụng cái này và nó hoạt động, vui lòng sử dụng các lệnh sau:

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

(xác nhận rằng tất cả các thư viện đã bị xóa)

sudo yum install python-urllib3
sudo yum install python-requests
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.