59

我找到了几个关于这个问题的页面,但没有一个能解决我的问题。

即使我做一个:

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. 重新安装后 - >相同。
以下是关于所需的版本urllib3chardet版本: 摘录/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

我没有更多的想法...

4

19 回答 19

98

这是因为操作系统安装了不同的请求模块以及本地安装的 python 依赖项。

可以通过升级请求来解决:

pip install requests

或者

pip3 install requests
于 2018-10-28T14:33:59.830 回答
25

升级到时遇到类似的错误urllib3 1.23。安装旧版本1.22为我解决了这个错误。

执行以下操作以安装旧urllib3版本:

  1. pip uninstall urllib3
  2. pip install urllib3==1.22
于 2018-10-09T07:47:42.563 回答
23

您确实有一个混合设置(两者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 包

两种选择:

  • 从您的操作系统发行版降级requests到版本(查看可用的内容apt show python-requests),或者 pypi.org 上的旧版本,或者

  • 或安装更新的 urllib3 和 chardet(您可以从 pipy.org 手动下载 wheel 文件并pip install对其进行操作,包括任何依赖项),无论是在用户级别(--userpip 安装选项)还是在 virtualenv 中。

您可以在virtualenv ( apt show python-virtualenv)中测试所有内容。它甚至应该在其虚拟环境中为您部署一个更新的 pip。也可以--user用户级别(祝你好运!

于 2018-05-07T11:00:39.957 回答
21

最佳实践是确保请求及其依赖项是最新的。

蟒蛇2

$ pip install --upgrade 请求

蟒蛇 3

$ pip3 install --upgrade 请求

于 2019-04-16T17:14:26.667 回答
10

docker-compose <some-action>我在系统更新后尝试运行时遇到了这个问题。

有几个原因可能导致上述错误。

我将在这里添加另一个解决方案,如果其他解决方案不适合他的特定场景,也许它会对某人有所帮助。

以下组合为我解决了这个问题:

pip uninstall urllib3    
pip uninstall chardet
pip install requests 
于 2019-04-03T21:13:25.817 回答
7

对我来说,解决方法是:

pip uninstall urllib3    
pip uninstall chardet
pip install requests

堆:

Centos 7.6.1810

docker-compose 1.24.1 build 4667896(docker-compose 日志给我警告)

蟒蛇2.7.5

点 8.1.2

于 2019-10-31T18:19:40.493 回答
6

很简单,您只需更新 -

 pip3 install requests
于 2019-05-16T13:59:09.427 回答
5

就我而言,chardet 包有问题。我安装了两个版本(2.3.0 和 3.04),出于某种原因,python 加载了旧版本。我的解决方案是手动删除包:

rm -rf /usr/lib/python2.7/site-packages/chardet*

并再次安装

pip install chardet

如果尚未完成更新 urllib3 并请求最新版本

pip install --upgrade urllib3
pip install --upgrade requests
于 2019-12-19T07:35:53.203 回答
5

它对我有用。只需执行以下命令。

$ sudo pip uninstall requests

$ sudo pip install requests

$ sudo pip uninstall docopt

$ sudo pip install docopt

这是详细的参考链接

于 2019-02-18T12:19:32.190 回答
4

所需要的只是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 的答案上添加一个小评论,但没有足够的声誉。]

于 2019-05-24T05:59:49.637 回答
2

我用这个命令解决了这个问题

pip install --upgrade requests==2.20.1

如果您看到如下版本不兼容消息,您应该尝试其他版本。所有版本都是:这里

ERROR: docker-compose 1.24.1 has requirement requests!=2.11.0,!=2.12.2,!=2.18.0,<2.21,>=2.6.1, but you'll have requests 2.21.0 which is incompatible.
于 2019-10-05T17:55:18.777 回答
1

我有一个旧版本的requests.

requests将版本从更改2.19.12.20.1为我解决了它。

于 2018-11-13T14:36:53.097 回答
1

我解决了这个问题

pip install --upgrade requests==2.20.1

如果您看到如下版本不兼容消息,您应该尝试其他版本。所有版本都是:这里

ERROR: docker-compose 1.24.1 has requirement requests!=2.11.0,!=2.12.2,!=2.18.0,<2.21,>=2.6.1, but you'll have requests 2.21.0 which is incompatible.
于 2019-10-05T17:43:58.827 回答
1

试试这两个命令,希望你能成功。

sudo python3 -m pip install --upgrade --user urllib3==1.24.3

sudo apt-get update
于 2020-11-11T06:18:55.433 回答
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

然后,您知道版本urllib3chardet兼容的范围。所以,你尝试:

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
于 2019-02-06T16:08:04.820 回答
0

我在运行虚拟 python 环境(家庭助理)时遇到了这个错误,由于用户(家庭助理)没有密码或 sudo 权限,上述建议对我不起作用。

这种情况下的解决方案是简单地停用 venv 环境,然后删除虚拟环境目录并重新创建虚拟文件夹。

要停用 python3 venv,只需在虚拟环境树中的任何位置执行“停用”bash 命令。

于 2019-08-07T20:33:44.090 回答
0

我在以下 urllib3 和 chardet 版本中遇到了同样的问题。

操作系统:Ubuntu 18.04

urllib3:1.25.6

查德:3.0.4

错误:/usr/lib/python3/dist-packages/requests/ init .py:80: RequestsDependencyWarning: urllib3 (1.25.6) 或 chardet (3.0.4) 与支持的版本不匹配!请求依赖警告)

解决方案:更新“请求”包。

$ pip3 安装请求

于 2019-10-21T14:28:25.707 回答
0

只需更新 pip: sudo pip install -U pip

于 2019-05-24T09:38:46.560 回答
0

试图将 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

于 2019-05-14T13:40:19.970 回答