2015-10-07 18 views
5

OS: Mac OS X. Quando sto cercando di eseguire il codice qui sotto, ottengo l'errore:Python richiede ImportError: non si può importare nome HeaderParsingError

ImportError: cannot import name HeaderParsingError

Ho allegato traceback sotto il codice.

Ho provato a risolvere questo problema per 20 minuti ora, utilizzando Google e altri stackoverflow. Ho provato a correre:

pip install urllib3 --upgrade

Ho anche provato a reinstallare il pacchetto di richieste.

Non ha aiutato.

Questo sembra essere un problema con le mie richieste o pacchetto urllib3. Qualcuno ha avuto un problema simile?

Il codice:

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) 

Questa è 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 
+0

si prega di formattare il codice. –

+0

@salmanwahed, non sono sicuro di cosa intendi. Ho incluso il codice nel modo consigliato. Qualcosa non va nelle schede? Funziona con il mio IDE (pyCharm). – seb

+0

sì problema di indentazione nel codice. –

risposta

12

requests viene fornito con una propria copia della libreria urllib3, nel requests/packages sottodirectory. È questa copia che è in qualche modo rotta.

Reinstallare requests stesso; aggiornamento (si dispone al massimo di version 2.1.0, data la riga) o si reinstalla la versione esistente.

reinstallazione con pip può essere fatto con l'interruttore --force-reinstall:

pip install --force-reinstall requests==2.1.0 

o forzare un aggiornamento:

pip install --upgrade requests 
+1

Per me non erano le richieste urllib3 ma quella attuale, quindi un '[sudo] pip disinstallare urllib3' e' [sudo] installare pip urllib3' ha fatto il trucco. – radtek

+0

Ha avuto lo stesso problema su RHEL e una reinstallazione forzata ha funzionato. Ciò significa che capita spesso che le richieste vengano cancellate. – sorin

+0

@sorin: non lo so. Ho solo 3 datapoint qui. –

0

Ho avuto lo stesso problema, mentre stavo semplicemente cercando di fare qualsiasi comando tramite pip . Alla fine ho trovato una soluzione molto semplice, basta usare sudo prima del pip.

In particolare per il problema precedente, ho utilizzato il seguente comando.

sudo pip install --upgrade urllib3 

Sperare che possa essere d'aiuto.