web-dev-qa-db-fra.com

Requêtes Python ImportError: impossible d'importer le nom HeaderParsingError

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
6
seb

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
17
Martijn Pieters

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.

1
user1012513