¿Cómo soluciono 'ImportError: no se puede importar el nombre IncompleteRead'?


284

Cuando intento instalar algo con pipo pip3, obtengo:

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

Tengo un sistema Ubuntu 14.10.

¿Como puedo solucionar este problema?


1
posiblemente relacionado: stackoverflow.com/questions/27318535/…
cel

@cel: Esto no es un duplicado, porque es para Windows y ya lo he visto.
Martin Thoma

El enlace en la respuesta aceptada apunta al rastreador de problemas de ubuntu, por lo que este problema no parece ser específico de Windows. ¿Has intentado reinstalar Python como se OPsugiere?
cel

@cel No importa, acabo de encontrar una solución bastante simple.
Martin Thoma

44
... que era que?
Jonathan Hartley

Respuestas:


433

Si bien esta respuesta anterior podría ser la razón, este recorte me funcionó como una solución (en Ubuntu 14.04):

Primero elimine el paquete del administrador de paquetes:

# apt-get remove python-pip

Y luego instale la última versión al lado:

# easy_install pip

(gracias a @Aufziehvogel, @JunchaoGu)


10
Para los interesados:: --upgrade (-U)forzar actualización (busca PyPI para las últimas versiones)
Martin Thoma

11
Solo tiene que tener cuidado, no confundir a su administrador de paquetes nativo (apt) mediante la instalación lateral easy_install. Si es posible, lo recomendaría apt-get remove pipy luego easy_install pip.
Aufziehvogel

16
@Aufziehvogel apt-get remove python-pip
eggonlegs

77
Básicamente, esta respuesta empeora la situación.
hek2mgl

77
Para mí, esto fue 'apt-get remove python3-pip', seguido de 'apt-get install python3-setuptools', seguido de 'easy_install3 pip'
Jason Pepas

85

Este problema es causado por una falta de coincidencia entre su instalación de pip y la instalación de sus solicitudes.

A partir de las solicitudes requests.compat.IncompleteRead se ha eliminado la versión 2.4.0 . Las versiones anteriores de pip, por ejemplo, de julio de 2014 , todavía se utilizan IncompleteRead. En la versión actual de pip, la importación de IncompleteReadha sido eliminada.

Entonces, el culpable es:

  • solicitudes, para eliminar API pública demasiado rápido
  • Ubuntu para actualizar pip demasiado lento

Puede resolver este problema, ya sea actualizando pip a través de Ubuntu (si hay una versión más reciente) o instalando pip aparte de Ubuntu.


3
pip install request -U, solucionó el problema.
jonincanada

2
@ jonincanada, ¿cómo se supone que debo ejecutar un comando pip cuando pip falla?
Peter

80

Para arreglar pip3 (trabajado en Ubuntu 14.10):

easy_install3 -U pip

2
Esto también funciona en Ubuntu 14.04. Tenga en cuenta que esto instala un /usr/local/bin/pipque es para Python3; anteriormente pipejecuté una versión de Python 2. Lo arreglé deshabilitando por /usr/local/bin/pipcompleto, así que tengo que ejecutar explícitamente pip2o pip3.
Nelson

3
en Debian Jessiepara python2.7: después de purgar pip sudo apt-get purge python-requestsy reinstalar con apt-get (que se muestra en otra respuesta), la ejecución easy_install -U piphizo el truco.
MikeiLL

1
Para mí más que nada; Esta es la solución que funcionó para mí.
Hamid

¡Funciona de maravilla!
Error científico

33

O puedes eliminar todo requests.

Por ejemplo:

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

Esto funcionó para mí. ¿Puedo saber cuál es la relación de las solicitudes con la instalación de python-pip?
Roselyn Verbo Domingo

Si mira al requestsmódulo, verá que este módulo / lib se usa para enviar solicitudes HTTP. pipEl módulo necesita un requestsmódulo para descargar paquetes de ` . And the Solicitudes de índice de paquetes de Python` eliminados por usted, tiene otra versión que pipdebe instalarse.
Marius Stanca

Esto funcionó para mí también; Me encontré con el error al ejecutar un libro de jugadas Ansible que usaba el pipmódulo para instalar dependencias en una instalación nueva / nueva de Raspbian Jessie (para Raspberry Pi). Después de eliminar el paquete dist de solicitudes, todo funciona muy bien.
geerlingguy

Trabajó para mí también. Actualicé mi sistema operativo de wheezy a jessie, por lo que puede haber roto algo. Los tres métodos mencionados anteriormente no funcionaron para mí en primer lugar. Sin embargo, si utilicé el método 3 y luego el comando rm -rf, encontré que funcionaba.
Eamonn Kenny

Esto hizo el trabajo, sin dejar de mantener pip del repositorio de Debian. ¡muchas gracias!
Stefan

23

En Ubuntu 14.04 resolví esto usando el script de arranque de instalación de pip, como se describe en la documentación

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

Esa es una solución correcta para un entorno de desarrollo.


Esto resuelve el problema. Lástima que tal problema aún esté abierto en la versión LTS.
ganesshkumar

Tuve este problema en Ubuntu 15 y parece estar funcionando. El script get-pip.py decía que ya tenía el paquete que estaba buscando, pero sugirió que usara sudo con la bandera -H, que creo que funciona.
Rick Henderson

17

El problema es el módulo Python requests. Se puede arreglar por

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

Si tiene este problema con Python 3, debe escribir en python3lugar de hacerlo python.


44
Es absolutamente una buena solución.
Tinker Sun

8
Genial saberlo purge. Esto todavía no instaló una versión de trabajo de pip y cuando intenté ejecutar from requests.compat import IncompleteReaden la CLI de Python me dio el mismo error. Lo que sí funcionó, después de ejecutar los comandos anteriores, se estaba ejecutandoeasy_install -U pip
MikeiLL

Esta es la mejor solución que no involucra easy_install, y no obstaculiza su sistema eliminando pip primero.
Marc Tamsky

9

Esto debería funcionar para ti. Sigue estos sencillos pasos.

Primero, eliminemos el pip que ya está instalado para que no cause ningún error.

Terminal abierta

Tipo: sudo apt-get remove python-pip

Elimina pip que ya está instalado.

Método 1

Paso: 1 sudo easy_install -U pip

Instalará la última versión de pip.

Y devolverá su dirección: /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg instalado

o

Método 2

Paso: 1 vaya a este enlace .

Paso: 2 Haz clic derecho >> Guardar como ... con el nombre get-pip.py.

Paso: 3 use: cd para ir al mismo directorio que su archivo get-pip.py

Paso: 4 uso: sudo python get-pip.py

Instalará la última versión de pip.

o

Método 3

Paso: 1 uso: sudo apt-get install python-pip

Instalará la última versión de pip.


¿Podría agregar un poco más de detalles a su respuesta?
abarisone

Por supuesto. ¿Pero dónde te confundiste?
kiok46

Gracias, eliminé python-pip y luego usé easy_install. pip está funcionando de nuevo.
phansen

@phansen no problem (y)
kiok46

8

Simplemente correr easy_install -U pipresolvió mi problema.


2
Comenté antiguamente para expresar mi asombro de que tuve que atravesar un hilo de personas para purgar varios softwares solo para encontrar esta solución muy simple y útil. No estoy seguro de cuáles eran todas las limitaciones cuando se hizo la pregunta, pero esto funcionó .
mttpgn

5

Verifique si tiene una versión anterior de requestssentarse en su sitio ~/.local/lib/python2.7/site-packages/y elimínelo si es el caso (cambie la ruta para reflejar su versión de Python). Esto resolvió el problema para mí.


5

Mi versión de pip en ubuntu sugiere:

  pip install --upgrade pip

44
No funcionó para mí ya que pip está totalmente molesto por este error. Cualquier uso (incluso pip --version) muestra el cannot import name IncompleteReaderror, por lo que pip lamentablemente no puede actualizarse
Abe Voelker

En realidad, esto funciona en una instalación limpia de Ubuntu 14.04 (bootstrap desde minbase). De alguna manera se las piparregla para actualizarse sin referirse al requestsmódulo.
ony

Esto no funcionará con una pepita rota, un dilema de pollo o huevo.
Arnie97

4

En Windows, esto funcionó desde una solicitud administrativa:

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

Instalado / reinstalado python-requestsy python3-requestsque arregló pip3. Había cometido el error de instalar python3.6beta y luego python3.6rc.
noobninja

3

Intenté con cada respuesta avobe, pero no pude lograrlo.

Hice esto y funcionó

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

Después de eso, acabo de instalar virtualenv con pip

sudo pip install virtualenv

Construí el virtualenv en el que estaba trabajando y el paquete se instaló fácilmente. Entre en virtualenv usando source /bin/activate e intente instalar su paquete, por ejemplo:

pip install terminado

Funcionó para mí, aunque estaba usando python2.7 no python3


0

Compruebe si tiene un intérprete de Python con vida en alguna de las ventanas de terminal. Si es así, mátalo e intenta lo sudo pipque funcionó para mí.


0
  1. sudo apt-get eliminar python-pip
  2. sudo solicitudes de instalación fácil == 2.3.0
  3. sudo apt-get install python-pip


0

Para CentOS usé esto y funcionó, utilice los siguientes comandos:

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

(confirme que todas esas bibliotecas se han eliminado)

sudo yum install python-urllib3
sudo yum install python-requests
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.