この問題に関するページをいくつか見つけましたが、どれも私の問題を解決しませんでした。
たとえ私が:
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
これ以上アイデアはありません...
皆さんに感謝し、私の英語を申し訳なく思います:)
セットアップが混在している(apt
とpip
の両方がシステム全体のインストールに使用されており、これが一般的です)リクエスト(および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
を実行できます)。
virtualenv (apt show python-virtualenv
)ですべてをテストできます。さらに、仮想環境内に新しいpipをデプロイする必要があります。また、OSベンダーのpipと一緒に、ユーザーレベル(--user
)に新しいpip 10.0.1をインストールすることも possible ですが、それについて careful にする必要があります。幸運を!
これは、OSによってインストールされるさまざまな要求モジュールと、ローカルインストールのpython依存関係のためです。
リクエストをアップグレードすることで解決できます:
pip install requests
または
pip3 install requests
urllib3 1.23
にアップグレードすると、同様のエラーが発生しました。古いバージョン1.22
をインストールすると、このエラーは解決しました。
古いurllib3
バージョンをインストールするために以下を行いました:
pip uninstall urllib3
pip install urllib3==1.22
それは私のために働いた。以下のコマンドを実行するだけです。
$ Sudo pip uninstall requests
$ Sudo pip install requests
$ Sudo pip uninstall docopt
$ Sudo pip install docopt
ここにリファレンスがあります 詳細へのリンク !
ベストプラクティスは、リクエストおよびその依存関係が最新であることを確認することです。
Python 2
$ pip install --upgrade requests
Python 3
$ pip3 install --upgrade requests
更新するだけでいい-
pip3 install requests
古いバージョンのrequests
がありました。
requests
バージョンを2.19.1
から2.20.1
に変更すると解決しました。
特にこの場合のように、開発者がコメントに明確な指示を残した場合は、いつでもソースを確認してください。 (たぶん、著者はより具体的で、エラーメッセージにそれを入れるべきです、はい)
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
必要なのは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の回答に簡単なコメントを追加するだけでしたが、評判が十分ではありません。]
システムの更新後にdocker-compose <some-action>
を実行しようとしたときにこの問題が発生しました。
上記のエラーにつながる可能性のある理由はいくつかあります。
ここに別のソリューションを追加します。他のソリューションが彼の特定のシナリオに合わない場合、多分それは誰かを助けるでしょう。
次の組み合わせで問題が解決しました。
pip uninstall urllib3
pip uninstall chardet
pip install requests
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 <= 24
をassert minor <= 25
に変更すると、これで私の問題は解決しました-今のところ。
Githubにバグレポートがあります https://github.com/streamlink/streamlink/issues/2448
pipを更新するだけ:Sudo pip install -U pip
仮想python環境(ホームアシスタント)を実行しているときにこのエラーが発生し、ユーザー(ホームアシスタント)にパスワードまたはSudo権限がないため、上記の提案は機能しませんでした。
このシナリオの解決策は、単にvenv環境を非アクティブ化してから、仮想環境ディレクトリを削除し、仮想フォルダーを再作成することでした。
Python3 venvを非アクティブにするには、仮想環境ツリー内の任意の場所で 'deactivate' bashコマンドを実行します。