Python requests ImportError: cannot import name HeaderParsingError
Python requests ImportError: cannot import name HeaderParsingError
OS: Mac OS X。当我尝试 运行 下面的代码时,出现错误:
ImportError: cannot import name HeaderParsingError
我在代码下方附加了回溯。
我已经尝试使用 Google 和其他 Whosebug 解决这个问题 20 分钟了。我试过 运行ning:
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
requests
自带 urllib3
库的副本,位于 requests/packages
子目录中。是这个副本不知何故被破坏了。
重新安装requests
本身;要么升级(给定 from .packages import charade as chardet
行,你最多 version 2.1.0),要么重新安装现有版本。
使用 pip
重新安装可以通过 --force-reinstall
开关完成:
pip install --force-reinstall requests==2.1.0
或强制升级:
pip install --upgrade requests
我在尝试使用 pip 命令时遇到了同样的问题。最后我找到了一个非常简单的解决方案,只需在 pip.
之前使用 sudo
针对上述问题,我使用了以下命令。
sudo pip install --upgrade urllib3
希望对您有所帮助。
这可能是“urllib3”包本身的问题。 uninstall/install 将解决问题。
sudo pip uninstall urllib3
sudo pip install --upgrade urllib3
在我的例子中,错误是:
ImportError: cannot import name UnrewindableBodyError
另一个问题可能是,urllib3 是通过 pip 安装的,并且安装了 requests通过 yum 回购,反之亦然。在这种情况下,解决方法是完全删除这些库并通过相同的 repo 安装它。
我推荐 pip over yum 安装这两个包,因为它易于维护并提供更多控制。 OS 修补或 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。如上所述,我更喜欢 pip 而不是 yum。
仅通过 yum 安装这两个包:
sudo yum install python-urllib3
sudo yum install python-requests
注意:当 yum 更新发生在 OS 级别时,始终使用虚拟环境以避免冲突。
OS: Mac OS X。当我尝试 运行 下面的代码时,出现错误:
ImportError: cannot import name HeaderParsingError
我在代码下方附加了回溯。
我已经尝试使用 Google 和其他 Whosebug 解决这个问题 20 分钟了。我试过 运行ning:
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
requests
自带 urllib3
库的副本,位于 requests/packages
子目录中。是这个副本不知何故被破坏了。
重新安装requests
本身;要么升级(给定 from .packages import charade as chardet
行,你最多 version 2.1.0),要么重新安装现有版本。
使用 pip
重新安装可以通过 --force-reinstall
开关完成:
pip install --force-reinstall requests==2.1.0
或强制升级:
pip install --upgrade requests
我在尝试使用 pip 命令时遇到了同样的问题。最后我找到了一个非常简单的解决方案,只需在 pip.
之前使用 sudo针对上述问题,我使用了以下命令。
sudo pip install --upgrade urllib3
希望对您有所帮助。
这可能是“urllib3”包本身的问题。 uninstall/install 将解决问题。
sudo pip uninstall urllib3
sudo pip install --upgrade urllib3
在我的例子中,错误是:
ImportError: cannot import name UnrewindableBodyError
另一个问题可能是,urllib3 是通过 pip 安装的,并且安装了 requests通过 yum 回购,反之亦然。在这种情况下,解决方法是完全删除这些库并通过相同的 repo 安装它。
我推荐 pip over yum 安装这两个包,因为它易于维护并提供更多控制。 OS 修补或 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。如上所述,我更喜欢 pip 而不是 yum。
仅通过 yum 安装这两个包:
sudo yum install python-urllib3
sudo yum install python-requests
注意:当 yum 更新发生在 OS 级别时,始终使用虚拟环境以避免冲突。