OS: Mac OS X. Lorsque j'essaie d'exécuter le code ci-dessous, le message d'erreur suivant s'affiche:
ImportError: impossible d'importer le nom HeaderParsingError
J'ai joint traceback ci-dessous le code.
J'ai essayé de résoudre ce problème pendant 20 min maintenant, en utilisant Google et un autre stackoverflow. J'ai essayé de courir:
pip installer urllib3 --upgrade
J'ai également essayé de réinstaller le paquet de demandes.
Cela n'a pas aidé.
Cela semble être un problème avec mes demandes ou le paquet urllib3. Quelqu'un at-il 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 la 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
requests
vient avec sa propre copie de la bibliothèque urllib3
, dans le sous-répertoire requests/packages
. C'est cette copie qui est en quelque sorte brisée.
Réinstallez requests
lui-même; soit mettre à niveau (vous avez au plus version 2.1.0 , étant donné la ligne from .packages import charade as chardet
), soit réinstaller la version existante.
La réinstallation avec pip
peut être effectuée avec le commutateur --force-reinstall
:
pip install --force-reinstall requests==2.1.0
ou forcer une mise à niveau:
pip install --upgrade requests
J'ai eu le même problème alors que j'essayais simplement de faire n'importe quelle commande en utilisant pip. A la fin, j'ai trouvé une solution très simple, il suffit d'utiliser Sudo before pip .
Spécifiquement pour le problème ci-dessus, j'ai utilisé la commande suivante.
Sudo pip install --upgrade urllib3
J'espère que ça va aider.