web-dev-qa-db-ja.com

RequestsDependencyWarning:urllib3(1.9.1)またはchardet(2.3.0)がサポートされているバージョンと一致しません

この問題に関するページをいくつか見つけましたが、どれも私の問題を解決しませんでした。

たとえ私が:

pip show

私は得る:

/usr/local/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.9.1) or chardet (2.3.0) doesn't match a supported version!
  RequestsDependencyWarning)
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2691, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2322, in load
    return self.resolve()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2328, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
    from pip.vcs import git, Mercurial, Subversion, Bazaar  # noqa
  File "/usr/lib/python2.7/dist-packages/pip/vcs/Mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 22, in <module>
    import requests, six
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 90, in <module>
    from urllib3.exceptions import DependencyWarning
ImportError: cannot import name DependencyWarning

私がしたこと :

pip install --upgrade chardet

しかし、説明するように、それは私に同じエラーを与えました。

だから私はやった:

Sudo apt remove python-chardet

そして彼のすべての依存を失望させます。再インストール後->同じ: '(

Python-pipでも同じことをしました。再インストール後->同じ。

Urllib3および必要なchardetバージョンに関する行は次のとおりです。/usr/local/lib/python2.7/dist-packages/requests/init.pyの抽出:

    # Check urllib3 for compatibility.
    major, minor, patch = urllib3_version  # noqa: F811
    major, minor, patch = int(major), int(minor), int(patch)
    # urllib3 >= 1.21.1, <= 1.22
    assert major == 1
    assert minor >= 21
    assert minor <= 22

    # Check chardet for compatibility.
    major, minor, patch = chardet_version.split('.')[:3]
    major, minor, patch = int(major), int(minor), int(patch)
    # chardet >= 3.0.2, < 3.1.0
    assert major == 3
    assert minor < 1
    assert patch >= 2


# Check imported dependencies for compatibility.
try:
    check_compatibility(urllib3.__version__, chardet.__version__)
except (AssertionError, ValueError):
    warnings.warn("urllib3 ({0}) or chardet ({1}) doesn't match a supported "
                  "version!".format(urllib3.__version__, chardet.__version__),
                  RequestsDependencyWarning)

私のバージョンは:

 ii  python-urllib3                                             
     1.9.1-3                                    all          HTTP library with thread-safe connection pooling for Python 
ii  python-chardet     
     2.3.0-1   

                             all          universal character encoding detector for Python2

これ以上アイデアはありません...

皆さんに感謝し、私の英語を申し訳なく思います:)

24
NuX_o

セットアップが混在している(aptpipの両方がシステム全体のインストールに使用されており、これが一般的です)リクエスト(およびpipに必要なモジュールのサポートされているバージョンと実際には一致しませんv1.5.6もかなり古いです)。

requests(どのバージョンですか?pip installから残っている可能性が高い)には以下が必要です。
urllib3:1.21.1-1.22
chardet:3.0.2-3.1.0

あなたが持っている:
urllib3(1.9.1)python-urllib3 1.9.1-3 debianパッケージから
chardet(2.3.0)python-chardet 2.3.0-1 debianパッケージから

2つのオプション:

  • requestsをOSディストリビューションのバージョンにダウングレードするか(apt show python-requestsで利用できるものを参照)、pypi.orgの古いバージョン、または

  • または、ユーザーレベル(pip install pipインストールオプション)またはvirtualenvで、新しいurllib3とchardetをインストールします(pipy.orgからwheelファイルを手動でダウンロードし、依存関係を含めて--userを実行できます)。

virtualenvapt show python-virtualenv)ですべてをテストできます。さらに、仮想環境内に新しいpipをデプロイする必要があります。また、OSベンダーのpipと一緒に、ユーザーレベル(--user)に新しいpip 10.0.1をインストールすることも possible ですが、それについて careful にする必要があります。幸運を!

9
Alexey C.

これは、OSによってインストールされるさまざまな要求モジュールと、ローカルインストールのpython依存関係のためです。

リクエストをアップグレードすることで解決できます:

pip install requests

または

pip3 install requests
43
Joel G Mathew

urllib3 1.23にアップグレードすると、同様のエラーが発生しました。古いバージョン1.22をインストールすると、このエラーは解決しました。

古いurllib3バージョンをインストールするために以下を行いました:

  1. pip uninstall urllib3
  2. pip install urllib3==1.22
7
Nafeez Quraishi

それは私のために働いた。以下のコマンドを実行するだけです。

$ Sudo pip uninstall requests

$ Sudo pip install requests

$ Sudo pip uninstall docopt

$ Sudo pip install docopt

ここにリファレンスがあります 詳細へのリンク

5
Saurabh

ベストプラクティスは、リクエストおよびその依存関係が最新であることを確認することです。

Python 2

$ pip install --upgrade requests

Python 3

$ pip3 install --upgrade requests

4
h3xStream

更新するだけでいい-

 pip3 install requests
3
Mohammad Aarif

古いバージョンのrequestsがありました。

requestsバージョンを2.19.1から2.20.1に変更すると解決しました。

1
Eyal Levin

特にこの場合のように、開発者がコメントに明確な指示を残した場合は、いつでもソースを確認してください。 (たぶん、著者はより具体的で、エラーメッセージにそれを入れるべきです、はい)

vi /usr/lib/python2.7/site-packages/requests/__init__.pyを開き、check_compatibility(を検索します。

def check_compatibility(urllib3_version, chardet_version):
    urllib3_version = urllib3_version.split('.')
    assert urllib3_version != ['dev']  # Verify urllib3 isn't installed from git.

    # Sometimes, urllib3 only reports its version as 16.1.
    if len(urllib3_version) == 2:
        urllib3_version.append('0')

    # Check urllib3 for compatibility.
    major, minor, patch = urllib3_version  # noqa: F811
    major, minor, patch = int(major), int(minor), int(patch)
    # urllib3 >= 1.21.1, <= 1.24     <------------------ here
    assert major == 1
    assert minor >= 21
    assert minor <= 24

    # Check chardet for compatibility.
    major, minor, patch = chardet_version.split('.')[:3]
    major, minor, patch = int(major), int(minor), int(patch)
    # chardet >= 3.0.2, < 3.1.0     <------------------ and here
    assert major == 3
    assert minor < 1
    assert patch >= 2

そうすれば、urllib3およびchardet互換のバージョンの範囲がわかります。だから、あなたは試してみてください:

pip uninstall urllib3
pip install urllib3==1.24
pip uninstall chardet
pip install chardet==3.0.9 # this will fail, prompting the correct versions available, so you will try to install 3.0.4 instead
1
WesternGun

必要なのはSudo pip install --upgrade requestsだけです。

Sudoがない場合はPermission deniedを取得し、--userを追加するとシステムpythonにインストールされません。

この後、pip listはRequestsDependencyWarningを取得しません。

私のシステムの出力:

$ Sudo pip install --upgrade requests

/usr/lib/python3.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.2) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
Collecting requests
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
     |████████████████████████████████| 61kB 510kB/s
Requirement already satisfied, skipping upgrade: idna<2.9,>=2.5 in /usr/lib/python3.7/site-packages (from requests) (2.8)
Requirement already satisfied, skipping upgrade: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/lib/python3.7/site-packages (from requests) (1.25.2)
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB)
     |████████████████████████████████| 163kB 1.1MB/s
Requirement already satisfied, skipping upgrade: chardet<3.1.0,>=3.0.2 in /usr/lib/python3.7/site-packages (from requests) (3.0.4)
Installing collected packages: certifi, requests
  Found existing installation: requests 2.21.0
    Uninstalling requests-2.21.0:
      Successfully uninstalled requests-2.21.0
Successfully installed certifi-2019.3.9 requests-2.22.0

[@ h3xStreamの回答に簡単なコメントを追加するだけでしたが、評判が十分ではありません。]

1
j77h

システムの更新後にdocker-compose <some-action>を実行しようとしたときにこの問題が発生しました。

上記のエラーにつながる可能性のある理由はいくつかあります。

ここに別のソリューションを追加します。他のソリューションが彼の特定のシナリオに合わない場合、多分それは誰かを助けるでしょう。

次の組み合わせで問題が解決しました。

pip uninstall urllib3    
pip uninstall chardet
pip install requests 
1
Rotemya

Urllib3 1.25.2を1.24.3にダウングレードしようとしましたが、後者は見つかりませんでした。

$ Sudo pip install -I urllb3==1.24.3
ERROR: No matching distribution found for urllb3==1.24.3

私のために働いた簡単な修正:編集/usr/lib/python3.7/site-packages/requests/__init__.py

ブロック内:

# Check urllib3 for compatibility.
major, minor, patch = urllib3_version  # noqa: F811
major, minor, patch = int(major), int(minor), int(patch)
# urllib3 >= 1.21.1, <= 1.24     
assert major == 1
assert minor >= 21
assert minor <= 24

assert minor <= 24assert minor <= 25に変更すると、これで私の問題は解決しました-今のところ。

Githubにバグレポートがあります https://github.com/streamlink/streamlink/issues/2448

0
Thor

pipを更新するだけ:Sudo pip install -U pip

0
TonyGreenMouse

仮想python環境(ホームアシスタント)を実行しているときにこのエラーが発生し、ユーザー(ホームアシスタント)にパスワードまたはSudo権限がないため、上記の提案は機能しませんでした。

このシナリオの解決策は、単にvenv環境を非アクティブ化してから、仮想環境ディレクトリを削除し、仮想フォルダーを再作成することでした。

Python3 venvを非アクティブにするには、仮想環境ツリー内の任意の場所で 'deactivate' bashコマンドを実行します。

0
Tobias Holm