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

У меня нет больше идей...

Спасибо вам всем и извините за мой английский:)

23 ответа

Решение

У вас смешанные настройки (оба 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) из пакета debian python-urllib3 1.9.1-3
chardet (2.3.0) из пакета Debian python-chardet 2.3.0-1

Два варианта:

  • либо понизить requests к версии из вашего дистрибутива ОС (посмотрите, что доступно с apt show python-requests) или более старые версии на pypi.org, или

  • или установите более новые urllib3 и chardet (вы можете скачать файлы колеса вручную с pipy.org и сделать pip install на них, включая любые зависимости), либо на уровне пользователя (--user вариант установки pip) или в virtualenv.

Вы можете проверить все в virtualenv (apt show python-virtualenv). Он должен даже развернуть новый пункт для вас в его виртуальной среде. Также возможно установить более новый пип 10.0.1 на уровне пользователя (--user) вместе с вашим пипом от ОС, но вы должны быть осторожны с этим. Удачи!

Это из-за разных модулей запросов, установленных ОС и зависимостей python для вашей локальной установки.

Это может быть решено путем обновления запросов:

pip install requests

или же

pip3 install requests

Лучше всего убедиться, что запросы и их зависимости обновлены.

Python 2

$ pip install - запрос на обновление

Python 3

$ pip3 install - обновить запросы

Столкнулся с подобной ошибкой при обновлении до urllib3 1.23, Установка более старой версии 1.22 разрешил эту ошибку для меня.

Сделал следующее, чтобы установить более старый urllib3 версия:

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

Я столкнулся с этой проблемой при попытке запустить docker-compose <some-action> после обновления системы.

Есть несколько причин, которые могут привести к указанной ошибке.

Я добавлю другое решение здесь, может быть, это поможет кому-то, если другие решения не соответствуют его конкретному сценарию.

Следующая комбинация решила проблему для меня:

pip uninstall urllib3    
pip uninstall chardet
pip install requests 

Для меня исправление было:

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

Это сработало для меня. Просто выполните приведенные ниже команды.

$ sudo pip uninstall requests

$ sudo pip install requests

$ sudo pip uninstall docopt

$ sudo pip install docopt

Вот ссылка ссылка для деталей!

Просто вы должны только обновить -

 pip3 install requests

В моем случае возникла проблема с пакетом 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

Все, что нужно, это sudo pip install --upgrade requests,

Без sudo вы получите Permission deniedи если вы добавите --user он не будет установлен в системный питон.

После этого, 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, но мне не хватало репутации.]

В любой момент проверяйте источник именно так, особенно когда разработчик оставил четкую инструкцию в комментариях, как в этом случае. (Может быть, автор должен быть более конкретным и поставить его в сообщении об ошибке, да)

открыто 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

Я исправил эту проблему с помощью этой команды

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.

Попробуйте эти две команды, надеюсь, у вас все получится.

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

sudo apt-get update

Я столкнулся с той же проблемой.

      pip install --upgrade requests

Я выполнил эту команду, и проблема исправлена.

У меня была старая версия requests,

изменения requests версия от 2.19.1 в 2.20.1 решил это для меня.

Спасибо за Ваш ответ!

Ты был прав. Я забыл, но я установил разные пакеты из разных источников...

Я обновил весь мой дистрибутив. И все хорошо:)

Снова спасибо!

Я исправил проблему, вручную обновив пакет запросов с помощью pip:

      **pip install --upgrade requests**

Я исправил эту проблему с помощью

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.

Пытался понизить версию 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

Быстрое исправление, которое сработало для меня: Edit /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 (Home Assistant), и приведенные выше предложения не сработали для меня, поскольку у пользователя (homeassistant) не было пароля или прав sudo.

Решением в этом сценарии было просто деактивировать среду venv, а затем удалить каталог виртуальной среды и воссоздать виртуальную папку.

Чтобы деактивировать python3 venv, просто выполните команду bash deactivate в любом месте вашего дерева виртуальной среды.

У меня возникла та же проблема с Miniconda, когда я обновил ОС до Sonoma. Ничего не помогло, только удалил и переустановил.

У меня возникла такая же проблема с версиями ниже 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

Другие вопросы по тегам