Python demandes ImportError: impossible d'importer nom HeaderParsingError
OS: Mac OS X. Lorsque j'essaie d'exécuter le code ci-dessous, j'obtiens l'erreur:
ImportError: impossible d'importer nom HeaderParsingError
J'ai attaché traceback ci-dessous le code.
J'ai essayé de résoudre ce problème pendant 20 min maintenant, à l'aide de Google et d'autres stackoverflow. J'ai essayé de courir:
pip install urllib3 --mise à niveau
J'ai aussi essayé de réinstaller les demandes de package.
Il n'a pas aidé.
Cela semble être un problème avec mes demandes ou urllib3 paquet. Quelqu'un a eu un problème similaire?
Le code:
import requests
import json
def printResponse(r):
print '{} {}\n'.format(json.dumps(r.json(), sort_keys=True, indent=4, separators=(',', ': ')), r)
r = requests.get('http://wikitest.orcsoftware.com/rest/api/content',
params={'title': 'new page'},
auth=('seb', '****'))
printResponse(r)
parentPage = r.json()['results'][0]
pageData = {'type': 'comment', 'container': parentPage,
'body': {'storage': {'value': "<p>A new comment</p>", 'representation': 'storage'}}}
r = requests.post('http://localhost:8080/confluence/rest/api/content',
data=json.dumps(pageData),
auth=('admin', 'admin'),
headers=({'Content-Type': 'application/json'}))
printResponse(r)
C'est le traceback:
Traceback (most recent call last):
File "/Users/sebastian/OneDrive/orc/restAPI/createSpace.py", line 1, in <module>
import requests
File "/Library/Python/2.7/site-packages/requests/__init__.py", line 61, in <module>
from . import utils
File "/Library/Python/2.7/site-packages/requests/utils.py", line 25, in <module>
from .compat import parse_http_list as _parse_list_header
File "/Library/Python/2.7/site-packages/requests/compat.py", ine 7, in <module>
from .packages import charade as chardet
File "/Library/Python/2.7/site-packages/requests/packages/__init__.py", line 3, in <module>
from . import urllib3
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/__init__.py", line 16, in <module>
from .connectionpool import (
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 33, in <module>
from .connection import (
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/connection.py", line 41, in <module>
from .util import (
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/util/__init__.py", line 4, in <module>
from .response import is_fp_closed
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/util/response.py", line 3, in <module>
from ..exceptions import HeaderParsingError
ImportError: cannot import name HeaderParsingError
- veuillez formater votre code.
- pas sûr de ce que tu veux dire. J'ai inclus le code dans la méthode recommandée. Est quelque chose de mal avec les onglets? Il fonctionne avec mon IDE (pyCharm).
- oui indentation problème dans le code.
- Vous ne savez pas comment vous avez obtenu dans cet état, mais vous aurez besoin de réinstaller
requests
lui-même; il inclut une version deurllib3
dans lerequests/packages
répertoire. Il estrequests/packages/urllib3/exceptions.py
qui est la cause de ce problème ici. - merci, vais essayer.
- qui a résolu le problème! Si vous poster une réponse, je vais l'accepter. J'ai dû désinstaller les demandes avant de les ré-installer pour faire ce travail.
- Il semble que, même après plus d'un an, nous garder de voir cette erreur, le temps de l'enregistrer en tant que bug github.com/kennethreitz/requests/issues/3670
Vous devez vous connecter pour publier un commentaire.
requests
est livré avec sa propre copie de laurllib3
la bibliothèque, dans larequests/packages
sous-répertoire. Il est cette copie qui est en quelque sorte rompu.Réinstaller
requests
lui-même; soit mettre à jour (vous avez au plus la version 2.1.0, compte tenu de lafrom .packages import charade as chardet
ligne), ou de réinstaller la version existante.Réinstallation avec
pip
peut être fait avec le--force-reinstall
commutateur:ou de forcer une mise à niveau:
[sudo] pip uninstall urllib3
et[sudo] pip install urllib3
a fait le tour.J'ai eu le même problème alors que j'étais simplement en train d'essayer d'apporter toute l'aide de la commande pip. À la fin, j'ai trouvé une solution très simple, il suffit d'utiliser sudo avant pip.
Spécifiquement pour le problème ci-dessus, j'ai utilisé la commande suivante.
Espère que cela va aider.