【问题标题】:Python (pip) - RequestsDependencyWarning: urllib3 (1.9.1) or chardet (2.3.0) doesn't match a supported versionPython (pip) - RequestsDependencyWarning:urllib3 (1.9.1) 或 chardet (2.3.0) 与支持的版本不匹配
【发布时间】:2023-03-29 18:05:01
【问题描述】:

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

即使我做了一个:

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

并卸载他所有的依赖项。 在我重新安装它之后-> 相同:'(

我对@9​​87654325@ 做了同样的事情。重新安装后 - >相同。
以下是有关 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

我没有更多的想法......

【问题讨论】:

    标签: python pip python-requests urllib3 chardet


    【解决方案1】:

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

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

    pip install requests
    

    pip3 install requests
    

    【讨论】:

    • 这也有效sudo python3 -m pip install --upgrade requests
    【解决方案2】:

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

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

    1. pip uninstall urllib3
    2. pip install urllib3==1.22

    【讨论】:

    • 这解决了我在使用 Localstack 时遇到的问题。
    • 对于 selenium,请确保使用 1.26 (pip install urllib3==1.26)
    【解决方案3】:

    您确实有一个混合设置(aptpip 都用于在系统范围内安装,这很常见),它确实与请求所需的受支持的模块版本不匹配(和 pip v1 .5.6 也很老了)。

    requests(哪个版本?可能是 pip install 的剩余版本)需要:
    urllib3:1.21.1 - 1.22
    查德:3.0.2 - 3.1.0

    你有:
    来自 python-urllib3 1.9.1-3 debian 包的 urllib3 (1.9.1)
    python-chardet 2.3.0-1 debian 包中的 chardet (2.3.0)

    两个选项:

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

    • 或安装更新的 urllib3 和 chardet(您可以从 pipy.org 手动下载 wheel 文件并对其执行pip install,包括任何依赖项),或者在用户级别(--user pip 安装选项)或在虚拟环境中。

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

    【讨论】:

    • 显然 SO 社区喜欢单行复制粘贴解决方案。应该这样做的。 :)
    【解决方案4】:

    最佳做法是确保请求及其依赖项是最新的。

    Python 2

    $ pip install --upgrade 请求

    Python 3

    $ pip3 install --upgrade 请求

    【讨论】:

      【解决方案5】:

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

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

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

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

      pip uninstall urllib3    
      pip uninstall chardet
      pip install requests 
      

      【讨论】:

        【解决方案6】:

        对我来说,解决方法是:

        pip uninstall urllib3    
        pip uninstall chardet
        pip install requests
        

        堆栈:

        Centos 7.6.1810

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

        python 2.7.5

        点 8.1.2

        【讨论】:

          【解决方案7】:

          很简单,你只需要更新 -

           pip3 install requests
          

          【讨论】:

            【解决方案8】:

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

            $ sudo pip uninstall requests
            
            $ sudo pip install requests
            
            $ sudo pip uninstall docopt
            
            $ sudo pip install docopt
            

            这是参考link for detail

            【讨论】:

            • 非常感谢!这让我省了很多麻烦!
            【解决方案9】:

            就我而言,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
            

            【讨论】:

            • pip install --upgrade urllib3 对我来说效果很好,谢谢。
            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

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

              pip install --upgrade requests==2.20.1
              

              如果您看到如下所示的版本不兼容消息,您应该尝试其他版本。所有版本均为:here

              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.
              

              【讨论】:

                【解决方案12】:

                我有一个旧版本的requests

                requests 版本从2.19.1 更改为2.20.1 为我解决了这个问题。

                【讨论】:

                  【解决方案13】:

                  在任何时候,检查源代码的方式,特别是当开发人员在 cmets 中留下明确的指令时,就像在这种情况下。 (也许作者应该更具体一些,并把它放在错误信息中,是的)

                  打开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
                  

                  【讨论】:

                    【解决方案14】:

                    我解决了这个问题

                    pip install --upgrade requests==2.20.1
                    

                    如果您看到如下所示的版本不兼容消息,您应该尝试其他版本。所有版本均为:here

                    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.
                    

                    【讨论】:

                      【解决方案15】:

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

                      sudo python3 -m pip install --upgrade --user urllib3==1.24.3
                      
                      sudo apt-get update
                      

                      【讨论】:

                        【解决方案16】:

                        尝试将 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 &lt;= 24 更改为 assert minor &lt;= 25,这解决了我的问题 - 暂时。

                        Github 上有一个错误报告https://github.com/streamlink/streamlink/issues/2448

                        【讨论】:

                          【解决方案17】:

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

                          【讨论】:

                            【解决方案18】:

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

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

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

                            【讨论】:

                              【解决方案19】:

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

                              操作系统:Ubuntu 18.04

                              urllib3:1.25.6

                              chardet:3.0.4

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

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

                              $ pip3 安装请求

                              【讨论】:

                                猜你喜欢
                                • 2018-01-31
                                • 1970-01-01
                                • 2022-11-12
                                • 2018-11-03
                                • 2019-02-26
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多