python引入header_Python请求ImportError:无法导入名称HeaderParsingError

操作系统:Mac OSX。当我尝试运行下面的代码时,出现错误:

ImportError: cannot import name HeaderParsingError

我已在代码下方附加了追溯。

我已经尝试使用Google和其他stackoverflow解决此问题20分钟。 我试过跑步:

pip install urllib3 --upgrade

我也尝试过重新安装请求包。

它没有帮助。

这似乎与我的请求或urllib3包有关。 有人遇到过类似的问题吗?

编码:

import requests

import json

def printResponse(r):

print '{} {}

'.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':"

A new comment

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

import requests

File"/Library/Python/2.7/site-packages/requests/__init__.py", line 61, in

from . import utils

File"/Library/Python/2.7/site-packages/requests/utils.py", line 25, in

from .compat import parse_http_list as _parse_list_header

File"/Library/Python/2.7/site-packages/requests/compat.py", ine 7, in

from .packages import charade as chardet

File"/Library/Python/2.7/site-packages/requests/packages/__init__.py", line 3, in

from . import urllib3

File"/Library/Python/2.7/site-packages/requests/packages/urllib3/__init__.py", line 16, in

from .connectionpool import (

File"/Library/Python/2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 33, in

from .connection import (

File"/Library/Python/2.7/site-packages/requests/packages/urllib3/connection.py", line 41, in

from .util import (

File"/Library/Python/2.7/site-packages/requests/packages/urllib3/util/__init__.py", line 4, in

from .response import is_fp_closed

File"/Library/Python/2.7/site-packages/requests/packages/urllib3/util/response.py", line 3, in

from ..exceptions import HeaderParsingError

ImportError: cannot import name HeaderParsingError

请格式化您的代码。

@salmanwahed,不确定您的意思。 我以推荐的方式包含了代码。 选项卡有问题吗? 它可以与我的IDE(pyCharm)一起使用。

是代码中的缩进问题。

不确定如何进入此状态,但是您需要重新安装requests本身。 它在requestspackages目录中包含urllib3的版本。 导致此问题的原因是requestspackagesurllib3exceptions.py。

@MartijnPieters,谢谢,将尝试。

@MartijnPieters,解决了这个问题! 如果您将其发布为答案,我会接受。 为了使此工作有效,我必须先卸载请求,然后再重新安装它。

似乎,即使在一年多之后,我们仍然继续看到此错误,还是有时间将其记录为错误github.com/kennethreitz/requests/issues/3670

requests带有自己的urllib3库副本,位于requests/packages子目录中。正是这个副本被打碎了。

重新安装requests本身;升级(给定from .packages import charade as chardet行,您最多具有2.1.0版本),或者重新安装现有版本。

可以使用--force-reinstall开关完成pip的重新安装:

pip install --force-reinstall requests==2.1.0

或强制升级:

pip install --upgrade requests

对我来说,不是请求urllib3而是实际的请求,因此[sudo] pip uninstall urllib3和[sudo] pip install urllib3可以解决问题。

在RHEL上遇到了同样的问题,并且强制重新安装工作。 这意味着它经常发生,解放的请求被破坏。

@sorin:我不知道。 我这里只有3个数据点。

由于错误似乎再次发生,我添加了github.com/kennethreitz/requests/issues/3670。

我只是尝试使用pip发出任何命令时遇到了相同的问题。最后,我找到了一个非常简单的解决方案,只需在点子之前使用sudo。

专门针对上述问题,我使用了以下命令。

sudo pip install --upgrade urllib3

希望对您有所帮助。

" urllib3"包本身可能是一个问题。卸载/安装将解决此问题。

sudo pip uninstall urllib3

sudo pip install --upgrade urllib3

就我而言,错误是:

ImportError: cannot import name UnrewindableBodyError

另一个问题可能是,urllib3是通过pip安装的,而请求是通过yum repo安装的,反之亦然。在这种情况下,解决方法是完全删除这些库并通过相同的存储库进行安装。

我建议使用点yum来安装这两个软件包,因为它易于维护并且具有更多控制权。操作系统修补或VM维护活动等所需的任何进一步的yum更新,都不会影响通过pip安装的软件包。

首先通过pip和yum删除" urllib3"和" requests"的所有安装:

sudo pip uninstall urllib3 -y

sudo pip uninstall requests -y

sudo yum remove python-urllib3 -y

sudo yum remove python-requests -y

现在仅通过pip安装两个软件包:

sudo pip install --upgrade urllib3

sudo pip install --upgrade requests

要仅通过yum安装两个软件包:

sudo yum install python-urllib3

sudo yum install python-requests

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值