Comment puis-je résoudre «ImportError: impossible d'importer le nom IncompleteRead»?

284

Lorsque j'essaie d'installer quoi que ce soit avec pipou pip3, j'obtiens:

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

J'ai un système Ubuntu 14.10.

Comment puis-je résoudre ce problème?

Martin Thoma
la source
1
peut - être liée: stackoverflow.com/questions/27318535/...
cel
@cel: Ce n'est pas un doublon, car c'est pour Windows et je l'ai déjà vu.
Martin Thoma
Le lien dans la réponse acceptée pointe vers le suivi des problèmes d'ubuntu - donc ce problème ne semble pas être spécifique à Windows. Avez-vous essayé de réinstaller python comme OPsuggéré?
cel
@cel Tant pis, je viens de trouver une solution assez simple.
Martin Thoma
4
... c'était quoi?
Jonathan Hartley

Réponses:

433

Bien que cette réponse précédente puisse être la raison, cette coupure a fonctionné pour moi comme solution (en Ubuntu 14.04):

Retirez d'abord le package du gestionnaire de packages:

# apt-get remove python-pip

Et puis installez la dernière version à côté:

# easy_install pip

(merci à @Aufziehvogel, @JunchaoGu)

thomas.mc.work
la source
10
Pour les intéressés:: --upgrade (-U)forcer la mise à niveau (recherche PyPI pour les dernières versions)
Martin Thoma
11
Il vous suffit d'être prudent, de ne pas confondre votre gestionnaire de paquets natif (apt) à côté de l'installation via easy_install. Si possible, je recommanderais à apt-get remove pipet ensuite easy_install pip.
Aufziehvogel
16
@Aufziehvogelapt-get remove python-pip
eggonlegs
7
Fondamentalement, cette réponse aggrave la situation.
hek2mgl
7
Pour moi, c'était «apt-get remove python3-pip», suivi de «apt-get install python3-setuptools», suivi de «easy_install3 pip»
Jason Pepas
85

Ce problème est dû à une incompatibilité entre votre installation de pip et l'installation de vos demandes.

À la demande, la version 2.4.0 requests.compat.IncompleteRead a été supprimée . Des versions plus anciennes de pip, par exemple à partir de juillet 2014 , étaient toujours utilisées IncompleteRead. Dans la version actuelle de pip, l'importation de IncompleteReada été supprimée.

Donc, celui à blâmer est soit:

  • demandes, pour supprimer l'API publique trop rapidement
  • Ubuntu pour mettre à jour pip trop lentement

Vous pouvez résoudre ce problème en mettant à jour pip via Ubuntu (s'il existe une version plus récente) ou en installant pip en dehors d'Ubuntu.

Aufziehvogel
la source
3
pip install requests -U, correction du problème.
jonincanada
2
@jonincanada comment suis-je censé exécuter une commande pip lorsque pip se bloque?
Peter
80

Pour réparer pip3 (travaillé sur Ubuntu 14.10):

easy_install3 -U pip
Branden Ghena
la source
2
Cela fonctionne également dans Ubuntu 14.04. Soyez conscient que cela installe un /usr/local/bin/pipqui est pour Python3; précédemment pipexécuté une version Python 2. Je l'ai corrigé en désactivant /usr/local/bin/pipcomplètement, donc je dois exécuter explicitement pip2ou pip3.
Nelson
3
sur Debian Jessiepour python2.7- après avoir purgé pip avec sudo apt-get purge python-requestset réinstallé avec apt-get (montré dans une autre réponse), l'exécution a easy_install -U pipfait l'affaire.
MikeiLL
1
Pour moi plus que tout; c'est la solution qui a fonctionné pour moi.
Hamid
Fonctionne comme un charme!
Échec scientifique
33

Ou vous pouvez tout supprimer requests.

Par exemple:

  • rm -rf /usr/local/lib/python2.7/dist-packages/requests*
Marius Stanca
la source
Cela a fonctionné pour moi. Puis-je savoir quelle est la relation entre les demandes et l'installation de python-pip
Roselyn Verbo Domingo
Si vous regardez le requestsmodule, vous verrez que ce module / lib est utilisé pour envoyer des requêtes HTTP. pipLe module nécessite un requestsmodule pour télécharger les packages à partir des ` . And the requêtes d' index de packages Python 'que vous avez supprimées. Une autre version pipdoit être installée.
Marius Stanca
Cela a également fonctionné pour moi; J'ai rencontré l'erreur lors de l'exécution d'un playbook Ansible qui utilisait le pipmodule pour installer des dépendances sur une nouvelle / nouvelle installation de Raspbian Jessie (pour Raspberry Pi). Après avoir supprimé le package de demandes de dist, tout fonctionne très bien.
geerlingguy
A aussi fonctionné pour moi. J'ai mis à jour mon système d'exploitation de Wheezy à Jessie, donc il se peut que quelque chose ait cassé. Les trois méthodes décrites ci-dessus ne fonctionnaient pas pour moi d'abord. Cependant, si j'ai utilisé la méthode 3, puis la commande rm -rf, j'ai constaté que cela fonctionnait.
Eamonn Kenny
cela a fait le travail, tout en gardant pip du dépôt debian. Merci beaucoup!
Stefan
23

Sur Ubuntu 14.04, j'ai résolu ce problème en utilisant le script d'amorçage d'installation pip, comme décrit dans la documentation

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

C'est une solution OK pour un environnement de développement.

robert_b_clarke
la source
Cela résout le problème. Dommage qu'un tel problème soit toujours ouvert sur la version LTS.
ganesshkumar
J'ai eu ce problème dans Ubuntu 15 et il semble fonctionner. Le script get-pip.py a dit que j'avais déjà le paquet que je cherchais mais a suggéré d'utiliser sudo avec l'indicateur -H qui, je crois, fonctionne.
Rick Henderson
17

Le problème est le module Python requests. Il peut être corrigé par

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

Si vous avez ce problème avec Python 3, vous devez écrire à la python3place de python.

Martin Thoma
la source
4
C'est absolument une bonne solution.
Tinker Sun
8
Cool à savoir purge. Cela n'a toujours pas installé une version de travail de pip et quand j'ai essayé de lancer from requests.compat import IncompleteReadla CLI python, cela a donné la même erreur. Quel travail DID, après avoir exécuté les commandes ci-dessus, était en cours d'exécutioneasy_install -U pip
MikeiLL
Il s'agit de la meilleure solution qui n'implique pas easy_install, et ne fausse pas votre système en supprimant d'abord pip.
Marc Tamsky
9

Cela devrait fonctionner pour vous. Suivez ces étapes simples.

Tout d'abord, supprimons le pip qui est déjà installé afin qu'il ne provoque aucune erreur.

Ouvrez le terminal.

Type: sudo apt-get supprimer python-pip

Il supprime le pip déjà installé.

Méthode-1

Étape 1 sudo easy_install -U pip

Il installera la dernière version de pip.

Et retournera son adresse: Installé /usr/local/lib/python2.7/dist-packages/pip-6.1.1-py2.7.egg

ou

Méthode-2

Étape: 1 allez sur ce lien .

Étape: 2 Faites un clic droit >> Enregistrer sous .. avec le nom get-pip.py.

Étape 3 utilisez: cd pour aller dans le même répertoire que votre fichier get-pip.py

Étape 4 utilisation: sudo python get-pip.py

Il installera la dernière version de pip.

ou

Méthode-3

Étape 1 utilisez: sudo apt-get install python-pip

Il installera la dernière version de pip.

kiok46
la source
Pourriez-vous ajouter un peu plus de détails à votre réponse?
abarisone
Sûr. Mais où vous êtes-vous trompé?
kiok46
Merci, j'ai supprimé python-pip, puis utilisé easy_install. pip fonctionne à nouveau.
phansen
@phansen pas de problème (y)
kiok46
8

La simple exécution a easy_install -U piprésolu mon problème.

forzagreen
la source
2
Commentant anciennement pour exprimer ma stupéfaction que j'ai dû parcourir un fil de personnes aptes à purger divers logiciels juste pour trouver cette solution très simple et utile. Je ne sais pas quelles étaient les limites quand la question a été posée, mais cela a fonctionné .
mttpgn
5

Vérifiez si vous avez une version plus ancienne de requestsvotre siège ~/.local/lib/python2.7/site-packages/et supprimez-la si c'est le cas (changez de chemin pour refléter votre version de python). Cela a résolu le problème pour moi.

ggll
la source
5

Ma version de pip sur ubuntu suggère:

  pip install --upgrade pip
PhoebeB
la source
4
Cela n'a pas fonctionné pour moi car pip est totalement gêné par cette erreur. Toute utilisation (même pip --version) affiche l' cannot import name IncompleteReaderreur, donc pip est malheureusement incapable de se mettre à niveau
Abe Voelker
En fait, cela fonctionne sur une installation propre d'Ubuntu 14.04 (bootstrap from minbase). En quelque sorte pipparvient à se mettre à jour sans se référer au requestsmodule.
ony
Cela ne fonctionnera pas avec un pip cassé - un dilemme de poulet ou d'oeuf.
Arnie97
4

Sous Windows, cela fonctionnait à partir d'une invite d'administration:

  • Supprimer C:\Python27\Lib\site-packages\requests*
  • easy_install requests==2.3
  • pip install --upgrade pip
  • pip install --upgrade requests
Jim Hunziker
la source
Installé / réinstallé python-requestset python3-requestsqui a fixé pip3. Avait fait l'erreur d'installer python3.6beta puis python3.6rc.
noobninja
3

J'ai essayé avec chaque réponse avobe, mais je n'ai pas pu le faire.

A fait cela et a travaillé

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

Après cela, je viens d'installer virtualenv avec pip

sudo pip install virtualenv

J'ai construit le virtualenv sur lequel je travaillais et le package a été installé facilement. Entrez dans virtualenv en utilisant source /bin/activate et essayez d'installer votre package, par exemple:

pip install terminado

Cela a fonctionné pour moi, bien que j'utilisais python2.7 pas python3

Bruno O. Sánchez
la source
0

Vérifiez si un interpréteur python est actif dans l'une des fenêtres du terminal. Si c'est le cas, tuez-le et essayez sudo pipce qui a fonctionné pour moi.

samsamara
la source
0
  1. sudo apt-get supprimer python-pip
  2. sudo easy_install requests == 2.3.0
  3. sudo apt-get install python-pip
nounours
la source
0

Pour CentOS, j'ai utilisé cela et cela a fonctionné, veuillez utiliser les commandes suivantes:

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

(confirmez que toutes ces bibliothèques ont été supprimées)

sudo yum install python-urllib3
sudo yum install python-requests
JohnBegood
la source