2015-10-07 167 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 

希望对你有所帮助。

相关问题