Python (pip) - RequestsDependencyWarning: urllib3 (1.9.1) 或 chardet (2.3.0) 与支持的版本不匹配
Python (pip) - RequestsDependencyWarning: urllib3 (1.9.1) or chardet (2.3.0) doesn't match a supported version
我找到了几页关于这个问题的内容,但其中 none 解决了我的问题。
即使我做了 :
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 软件包
来自 python-chardet 2.3.0-1 debian 软件包
的 chardet (2.3.0)
两个选项:
要么将 requests
降级到 OS 发行版的版本(查看 apt show python-requests
的可用版本),要么将 pypi.org 的旧版本降级,或
或安装更新的 urllib3 和 chardet(您可以从 pipy.org 手动下载 wheel 文件并对它们执行 pip install
,包括任何依赖项),或者在用户级别( --user
pip 安装选项)或在 virtualenv 中。
您可以在 virtualenv (apt show python-virtualenv
). It should even deploy a newer pip for you inside of its virtual envs. It is also to install a newer pip 10.0.1 at the user-level (--user
) alongside your OS-vendored pip but you need to be careful 中测试所有内容。祝你好运!
升级到 urllib3 1.23
时遇到类似错误。安装旧版本 1.22
为我解决了这个错误。
是否按照以下步骤安装了旧的 urllib3
版本:
pip uninstall urllib3
pip install urllib3==1.22
这是因为 OS 安装的请求模块与您本地安装的 python 依赖项不同。
可以通过升级请求解决:
pip install 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 uninstall requests
$ sudo pip install requests
$ sudo pip uninstall docopt
$ sudo pip install docopt
参考文献link for detail!
我在系统更新后尝试 运行 docker-compose <some-action>
时遇到了这个问题。
有几个原因可能导致上述错误。
我会在这里添加另一个解决方案,如果其他解决方案不适合他的特定场景,也许它会对某人有所帮助。
以下组合解决了我的问题:
pip uninstall urllib3
pip uninstall chardet
pip install requests
最佳做法是确保请求及其依赖项是最新的。
Python 2
$ pip install --upgrade requests
Python 3
$ pip3 install --upgrade 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
,这暂时解决了我的问题。
上有错误报告
简单你只需要更新-
pip3 install requests
只需要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 的回答添加一条小评论,
但没有足够的声望。]
只需更新 pip:sudo pip install -U pip
我收到此错误 运行 虚拟 python 环境 (Home Assistant) 并且上述建议对我不起作用,因为用户 (homeassistant) 没有密码或 sudo权利。
这种情况下的解决方案是简单地停用venv环境,然后删除虚拟环境目录并重新创建虚拟文件夹。
要停用 python3 venv,只需在虚拟环境树中的任意位置执行 'deactivate' bash 命令即可。
我用
解决了这个问题
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.
我用这个命令解决了这个问题
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.
我在使用以下 urllib3 和 chardet 版本时遇到了同样的问题。
OS : 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)
解决方案:更新 'requests' 包。
$ pip3 安装请求
对我来说,修复是:
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
在我的例子中,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 python3 -m pip install --upgrade --user urllib3==1.24.3
sudo apt-get update
我找到了几页关于这个问题的内容,但其中 none 解决了我的问题。
即使我做了 :
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 软件包
来自 python-chardet 2.3.0-1 debian 软件包
两个选项:
要么将
requests
降级到 OS 发行版的版本(查看apt show python-requests
的可用版本),要么将 pypi.org 的旧版本降级,或或安装更新的 urllib3 和 chardet(您可以从 pipy.org 手动下载 wheel 文件并对它们执行
pip install
,包括任何依赖项),或者在用户级别(--user
pip 安装选项)或在 virtualenv 中。
您可以在 virtualenv (apt show python-virtualenv
). It should even deploy a newer pip for you inside of its virtual envs. It is also --user
) alongside your OS-vendored pip but you need to be careful 中测试所有内容。祝你好运!
升级到 urllib3 1.23
时遇到类似错误。安装旧版本 1.22
为我解决了这个错误。
是否按照以下步骤安装了旧的 urllib3
版本:
pip uninstall urllib3
pip install urllib3==1.22
这是因为 OS 安装的请求模块与您本地安装的 python 依赖项不同。
可以通过升级请求解决:
pip install 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 uninstall requests
$ sudo pip install requests
$ sudo pip uninstall docopt
$ sudo pip install docopt
参考文献link for detail!
我在系统更新后尝试 运行 docker-compose <some-action>
时遇到了这个问题。
有几个原因可能导致上述错误。
我会在这里添加另一个解决方案,如果其他解决方案不适合他的特定场景,也许它会对某人有所帮助。
以下组合解决了我的问题:
pip uninstall urllib3
pip uninstall chardet
pip install requests
最佳做法是确保请求及其依赖项是最新的。
Python 2
$ pip install --upgrade requests
Python 3
$ pip3 install --upgrade 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
,这暂时解决了我的问题。
简单你只需要更新-
pip3 install requests
只需要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 的回答添加一条小评论, 但没有足够的声望。]
只需更新 pip:sudo pip install -U pip
我收到此错误 运行 虚拟 python 环境 (Home Assistant) 并且上述建议对我不起作用,因为用户 (homeassistant) 没有密码或 sudo权利。
这种情况下的解决方案是简单地停用venv环境,然后删除虚拟环境目录并重新创建虚拟文件夹。
要停用 python3 venv,只需在虚拟环境树中的任意位置执行 'deactivate' bash 命令即可。
我用
解决了这个问题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.
我用这个命令解决了这个问题
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.
我在使用以下 urllib3 和 chardet 版本时遇到了同样的问题。
OS : 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)
解决方案:更新 'requests' 包。
$ pip3 安装请求
对我来说,修复是:
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
在我的例子中,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 python3 -m pip install --upgrade --user urllib3==1.24.3
sudo apt-get update