webdevqa.jp.net

PythonリクエストImportError:名前HeaderParsingErrorをインポートできません

OS:Mac OSX。以下のコードを実行しようとすると、エラーが発生します。

ImportError:名前HeaderParsingErrorをインポートできません

コードの下にトレースバックを添付しました。

Googleやその他の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
7
seb

requestsには、urllib3サブディレクトリにあるrequests/packagesライブラリの独自のコピーが付属しています。どういうわけか壊れているのはこのコピーです。

requests自体を再インストールします。アップグレードするか(from .packages import charade as chardet行を指定すると最大で バージョン2.1. )、または既存のバージョンを再インストールします。

pipを使用した再インストールは、--force-reinstallスイッチを使用して実行できます。

pip install --force-reinstall requests==2.1.0

またはアップグレードを強制します。

pip install --upgrade requests
22
Martijn Pieters

単にpipを使用してコマンドを作成しようとしたときに、同じ問題が発生しました。最後に、非常に単純な解決策を見つけました。pipの前にSudoを使用してください。

特に上記の問題については、次のコマンドを使用しました。

Sudo pip install --upgrade urllib3

それがお役に立てば幸いです。

2
user1012513

"rllib"パッケージ自体に問題がある可能性があります。アンインストール/インストールすると問題が解決します。

Sudo pip uninstall urllib3
Sudo pip install --upgrade urllib3

私の場合、エラーは次のとおりです。

ImportError:名前UnrewindableBodyErrorをインポートできません

別の問題は、rllibpipを介してインストールされ、requestsyumリポジトリを介してインストールされた、またはその逆である可能性があります。その逆。その場合の修正は、これらのライブラリを完全に削除し、同じリポジトリを介してインストールすることです。

メンテナンスが簡単で、より詳細に制御できるため、両方のパッケージをインストールする場合は、pip overyumをお勧めします。 OSのパッチ適用またはVMメンテナンスアクティビティなど)に必要なyumの更新は、pipを介してインストールされたパッケージに影響を与えません。

まず、pipとyumを介して「rllib」と「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のみを使用してください。上で説明したように、私はyumよりもpipを好みます。

Yum経由でのみ両方のパッケージをインストールするには:

Sudo yum install python-urllib3
Sudo yum install python-requests

:yumの更新がOSレベルで発生した場合の競合を回避するために、常に仮想環境を使用してください。

1
Lalit Kumar B