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
и unistalling все его dependecies. После его переустановки → то же самое: '(
Я сделал то же самое для 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
У меня больше нет идей...
Спасибо вам всем и извините за мой английский :)
Ответы
Ответ 1
У вас смешанная настройка (для установки в масштабе всей системы использовались 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
) вместе с пипом, выпускаемым операционной системой, но вы должны быть осторожны с этим. Удачи!
Ответ 2
Это из-за различных модулей запросов, установленных ОС и зависимостей python для вашей локальной установки.
Это может быть решено путем обновления запросов:
pip install requests
или же
pip3 install requests
Ответ 3
Столкнулась с аналогичной ошибкой при обновлении до urllib3 1.23
. Установка старой версии 1.22
разрешила эту ошибку для меня.
Для установки более urllib3
версии urllib3
:
-
pip uninstall urllib3
-
pip install urllib3==1.22
Ответ 4
Это сработало для меня. Просто выполните приведенные ниже команды.
$ sudo pip uninstall requests
$ sudo pip install requests
$ sudo pip uninstall docopt
$ sudo pip install docopt
Здесь ссылка ссылка для деталей !
Ответ 5
Лучше всего убедиться, что запросы и их зависимости обновлены.
Python 2
$ pip install --upgrade запросов
Python 3
$ pip3 install --upgrade запросов
Ответ 6
Просто вы должны только обновить -
pip3 install requests
Ответ 7
Я столкнулся с этой проблемой при попытке запустить docker-compose <some-action>
после обновления системы.
Есть несколько причин, которые могут привести к указанной ошибке.
Я добавлю другое решение здесь, может быть, это поможет кому-то, если другие решения не соответствуют его конкретному сценарию.
Следующая комбинация решила проблему для меня:
pip uninstall urllib3
pip uninstall chardet
pip install requests
Ответ 8
У меня была более старая версия requests
.
Изменение версии requests
с 2.19.1
на 2.20.1
решило это для меня.
Ответ 9
В любой момент проверяйте источник именно так, особенно когда разработчик оставил четкую инструкцию в комментариях, как в этом случае. (Может быть, автор должен быть более конкретным и поставить его в сообщении об ошибке, да)
Откройте 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
Ответ 10
Все, что нужно, это sudo pip install --upgrade requests
.
Без sudo вы получите --user
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, но мне не хватало репутации.]
Ответ 11
Пытался понизить версию 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
Ответ 12
просто обновите pip: sudo pip install -U pip
Ответ 13
Я получил эту ошибку при запуске виртуальной среды Python (Home Assistant), и приведенные выше предложения не спомогли мне, поскольку у пользователя (homeassistant) не было пароля или прав sudo.
Решение в этом сценарии состояло в том, чтобы просто деактивировать среду venv, а затем удалить каталог виртуальной среды и воссоздать виртуальную папку.
Чтобы деактивировать python3 venv, просто выполните команду bash 'deactivate' в любом месте дерева виртуальной среды.
Ответ 14
Я исправил эту проблему с помощью
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.
Ответ 15
Я исправил эту проблему с помощью этой команды
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.
Ответ 16
Я столкнулся с той же проблемой в следующих версиях urllib3 и chardet.
ОС: Ubuntu 18.04
urllib3: 1,25,6
chardet: 3.0.4
Ошибка: /usr/lib/python3/dist-packages/запросы/init.py: 80: RequestsDependencyWarning: urllib3 (1.25.6) или chardet (3.0.4) не соответствуют поддерживаемой версии! RequestsDependencyWarning)
Решение: обновите pacakge "запросов".
$ pip3 устанавливает запросы