首先,这里的意思是urllib3和chardet的版本不匹配。了解原因之后我们就开始查看匹配的版本,点击报错提供的文件链接 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.25
assert major == 1
assert minor >= 21
assert minor <= 25
# 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
从代码中我们可以看到要求的版本:
urllib3的版本是在1.21.1-1.25.x之间,
chardet的版本是在3.0.2-3.1.0之间
下面我们就通过命令 pip install urllib3== 查询urllib3存在的版本,经查询,结果如下:
(from versions: 0.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.2, 1.2.1, 1.2.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.7.1, 1.8, 1.8.2, 1.8.3, 1.9, 1.9.1, 1.10, 1.10.1, 1.10.2, 1.10.3, 1.10.4, 1.11, 1.12, 1.13, 1.13.1, 1.14, 1.15, 1.15.1, 1.16, 1.17, 1.18, 1.18.1, 1.19, 1.19.1, 1.20, 1.21, 1.21.1, 1.22, 1.23, 1.24, 1.24.1,1.24.2, 1.24.3, 1.25, 1.25.1, 1.25.2, 1.25.3, 1.25.4, 1.25.5, 1.25.6, 1.25.7, 1.25.8, 1.25.9, 1.25.10, 1.25.11, 1.26.0, 1.26.1, 1.26.2, 1.26.3, 1.26.4)
在上面我们只需要选择版本在 1.21.1-1.25.x之间任意版本,可选择版本如下:
1.21, 1.21.1, 1.22, 1.23, 1.24, 1.24.1, 1.24.2, 1.24.3, 1.25, 1.25.1, 1.25.2, 1.25.3,1.25.4, 1.25.5, 1.25.6, 1.25.7, 1.25.8, 1.25.9, 1.25.10, 1.25.11
任意选择一个版本即可,例如:
pip install urllib3==1.25.11
安装相应版本时不需要删除原来版本,在安装新版本时会自动卸载原有的库
同理,对于chardet也是一样的,查询所有版本,然后选取在3.0.2-3.1.0之间的版本(不包含3.1.0版本)安装即可。