簡體   English   中英

Python請求ImportError:無法導入名稱HeaderParsingError

[英]Python requests ImportError: cannot import name HeaderParsingError

操作系統:Mac OS X.當我嘗試運行下面的代碼時,我收到錯誤:

ImportError:無法導入名稱HeaderParsingError

我在代碼下面附加了回溯。

我已經嘗試使用谷歌和其他stackoverflow解決這個問題20分鍾了。 我試過跑:

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 ; 要么升級(最多版本為2.1.0 ,請將from .packages import charade as chardet行),要么重新安裝現有版本。

使用--force-reinstall開關可以使用pip --force-reinstall

pip install --force-reinstall requests==2.1.0

或強制升級:

pip install --upgrade requests

當我只是嘗試使用pip發出任何命令時,我遇到了同樣的問題。 最后我找到了一個非常簡單的解決方案,只需在pip之前使用sudo

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

sudo pip install --upgrade urllib3

希望有所幫助。

這可能是“ urllib3 ”包本身的問題。 卸載/安裝將解決問題。

sudo pip uninstall urllib3
sudo pip install --upgrade urllib3

就我而言,錯誤是:

ImportError:無法導入名稱UnrewindableBodyError

另一個問題可能是, urllib3是通過pip安裝的,而請求是通過yum repo安裝的,反之亦然。 在這種情況下,修復是完全刪除這些庫並通過相同的repo安裝它。

我推薦使用yum來安裝兩個軟件包,因為它易於維護並提供更多控制。 操作系統修補或VM維護活動等所需的任何進一步更新都不會影響通過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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM