2015-10-07 152 views
5

操作系統:Mac OS X.當我試圖運行下面的代碼,我得到的錯誤:Python的請求導入錯誤:無法導入名稱HeaderParsingError

ImportError: cannot import name HeaderParsingError

我已經把它貼下面的代碼追蹤。

我試着用20秒鐘的時間解決這個問題,使用Google和其他的stackoverflow。我試過跑步:

pip install urllib3 --upgrade

我也試過重新安裝請求包。

它沒有幫助。

這似乎是我的請求或urllib3包的問題。有沒有人有類似的問題?

代碼:

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) 

這是回溯:

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

請格式化您的代碼。 –

+0

@salmanwahed,不知道你的意思。我以推薦的方式包含了代碼。標籤有問題嗎?它適用於我的IDE(pyCharm)。 – seb

+0

代碼中有縮進問題。 –

回答

12

requests本身自帶的urllib3庫的副本,在requests/packages子目錄。這是這個副本這是不知何故破碎。

重新安裝requests本身;升級(最多隻有version 2.1.0,給定from .packages import charade as chardet一行),或者重新安裝現有版本。

pip重新安裝可與--force-reinstall開關來完成:

pip install --force-reinstall requests==2.1.0 

或強制升級:

pip install --upgrade requests 
+1

對我來說,它不是urllib3的請求,而是真正的urllib3,所以'[sudo] pip卸載urllib3'和'[sudo] pip install urllib3'就完成了。 – radtek

+0

在RHEL上遇到同樣的問題,並強制重新安裝。這意味着它經常發生請求librate被破壞。 – sorin

+0

@sorin:我不知道。我在這裏只有3個數據點。 –

0

我有,而我只是試圖讓使用PIP任何命令同樣的問題。最後我找到了一個非常簡單的解決方案,只需使用sudo之前pip

針對上述問題,我使用了以下命令。

sudo pip install --upgrade urllib3 

希望對你有所幫助。

相關問題