Как исправить ошибку «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: Это не дубликат, потому что это для окон, и я уже видел это.
Мартин Тома
Ссылка в принятом ответе указывает на средство отслеживания проблем в Ubuntu - так что эта проблема, похоже, не относится к конкретным окнам. Вы пытались переустановить Python, как OPпредложено?
чел
@cel Неважно, я только что нашел довольно простое решение.
Мартин Тома
4
... что было чем?
Джонатан Хартли

Ответы:

433

Хотя этот предыдущий ответ может быть причиной, этот отрывок работал для меня как решение (в Ubuntu 14.04):

Сначала удалите пакет из менеджера пакетов:

# apt-get remove python-pip

А затем установите последнюю версию рядом:

# easy_install pip

(спасибо @Aufziehvogel, @JunchaoGu)

thomas.mc.work
источник
10
Для заинтересованных:: --upgrade (-U)принудительное обновление (поиск PyPI для последних версий)
Martin Thoma
11
Вы просто должны быть осторожны, чтобы не запутать свой собственный менеджер пакетов (apt) при параллельной установке через 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»
Джейсон Пепас
85

Эта проблема вызвана несоответствием между вашей установкой pip и вашими запросами.

По состоянию на запрос версия 2.4.0 requests.compat.IncompleteRead была удалена . Более старые версии pip, например, с июля 2014 года , все еще использовались IncompleteRead. В текущей версии pip импорт IncompleteReadбыл удален.

Так что виноват либо:

  • запросы, для удаления публичного API слишком быстро
  • Ubuntu для медленного обновления pip

Вы можете решить эту проблему, либо обновив pip через Ubuntu (если есть более новая версия), либо установив pip отдельно от Ubuntu.

Aufziehvogel
источник
3
запросы установки pip -U, исправили проблему.
Йонинканада
2
@jonincanada, как я должен выполнить команду pip, когда pip падает?
Питер
80

Для исправления pip3 (работал на Ubuntu 14.10):

easy_install3 -U pip
Бранден Гена
источник
2
Это работает и в Ubuntu 14.04. Имейте в /usr/local/bin/pipвиду, что это устанавливает для Python3; ранее pipзапускал версию Python 2. Я исправил это, отключив /usr/local/bin/pipполностью, поэтому я должен явно запустить pip2или pip3.
Нельсон,
3
в Debian 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
Розелин Вербо Доминго
Если вы посмотрите на requestsмодуль, то увидите, что этот модуль / lib используется для отправки HTTP-запросов. pipmodule требуется requestsмодуль для загрузки пакетов из ` . And the запросов Python Package Index ', удаленных вами, и имеет другую версию, которую pipнеобходимо установить.
Мариус Станка
Это сработало и для меня; Я столкнулся с ошибкой при запуске пьесы Ansible, которая использовала pipмодуль для установки зависимостей при новой / новой установке Raspbian Jessie (для Raspberry Pi). После удаления пакета dist запросов все отлично работает.
geerlingguy
Работал на меня тоже. Я обновил свою ОС с wheezy до jessie, так что, возможно, что-то сломалось. Три метода, указанные выше, не сработали для меня. Однако, если я использовал метод 3, а затем команду rm -rf, я обнаружил, что она работает.
Имонн Кенни
это сработало, сохранив при этом pip из репозитория Debian. большое спасибо!
Стефан
23

В Ubuntu 14.04 я решил эту проблему с помощью сценария начальной загрузки pip, как описано в документации.

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

Это хорошее решение для среды разработки.

robert_b_clarke
источник
Это решает проблему. Слишком плохо, что такая проблема все еще открыта на версии LTS.
ganesshkumar
У меня была эта проблема в Ubuntu 15, и она, кажется, работает. Сценарий get-pip.py сказал, что у меня уже есть пакет, который я искал, но предложил использовать sudo с флагом -H, который, я считаю, работает.
Рик Хендерсон
17

Проблема в модуле Python requests. Это может быть исправлено

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

Если у вас есть эта проблема с Python 3, вы должны написать python3вместо python.

Мартин Тома
источник
4
Это абсолютно хорошее решение.
Тинкер Сан
8
Круто знать purge. Это все еще не установило рабочую версию pip, и когда я попытался запустить from requests.compat import IncompleteReadв CLI Python, он выдал ту же ошибку. Что ДЕЙСТВИТЕЛЬНО работало после запуска вышеуказанных командeasy_install -U pip
MikeiLL
Это лучшее решение, которое не включает easy_install и не мешает вашей системе, сначала удалив pip.
Марк Тамский
9

Это должно работать для вас. Следуйте этим простым шагам.

Во-первых, давайте удалим пункт, который уже установлен, чтобы он не вызывал никаких ошибок.

Откройте Терминал.

Тип: sudo apt-get удалить python-pip

Он удаляет пункт, который уже установлен.

Метод-1

Шаг: 1 sudo easy_install -U пункт

Будет установлена ​​последняя версия 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.

kiok46
источник
Не могли бы вы добавить немного больше деталей в свой ответ?
abarisone
Конечно. Но где ты запутался?
kiok46
Спасибо, я удалил python-pip, а затем использовал easy_install. Пип снова работает.
Фансен
@phansen без проблем (у)
kiok46
8

Просто бег easy_install -U pipрешил мою проблему.

forzagreen
источник
2
Старые комментарии, чтобы выразить свое изумление, что мне пришлось пробираться сквозь нити людей, способных чистить различные программы, чтобы найти это очень простое, полезное решение. Не уверен, какие были все ограничения, когда вопрос был задан, но это сработало .
Mttpgn
5

Проверьте погоду вы имеете старую версию requestsсидя в ~/.local/lib/python2.7/site-packages/и удалить его , если это имеет место (путь изменения , чтобы отразить питон версию). Это решило проблему для меня.

ggll
источник
5

Моя версия pip на Ubuntu предлагает:

  pip install --upgrade pip
PhoebeB
источник
4
У меня не сработало, так как пипс полностью скрыт этой ошибкой. Любое использование (даже pip --version) отображает cannot import name IncompleteReadошибку, так что pip, к сожалению, не может обновиться
Abe Voelker
На самом деле это работает на чистой установке Ubuntu 14.04 (начальная загрузка с minbase). Каким-то образом pipудается обновить себя без обращения к requestsмодулю.
оны
Это не будет работать со сломанной пипсой - дилеммой курица или яйцо.
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какой фикс пип3. Сделал ошибку, установив 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

Проверьте, есть ли живой интерпретатор Python в любом из окон терминала. Если это так, убейте его и попробуйте, sudo pipкоторый работал для меня.

samsamara
источник
0
  1. sudo apt-get удалить python-pip
  2. запросы sudo easy_install == 2.3.0
  3. sudo apt-get установить python-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
JohnBegood
источник