支持urllib3
v1.25 (今天/昨天发布)。 通常的 yada-yada “我的 CI 坏了”。
我们依赖的多个包(例如google.cloud.storage
、 azure.storage
)使用pkg_resources.require('requests >= 2.18.0')
对requests
进行严格的版本检查。 以下链中的任何未满足的依赖项,包括requests
将导致检查失败并引发异常。 urllib3<1.25
目前就是这样一种依赖。
进口无异常
pkg_resources.ContextualVersionConflict: (urllib3 1.25 (/usr/local/lib/python3.6/dist-packages), Requirement.parse('urllib3<1.25,>=1.21.1'), {'requests'})
The above exception was the direct cause of the following exception:
ImportError: ``requests >= 2.18.0`` is required by the ``google.resumable_media.requests`` subpackage.
It can be installed via
pip install google-resumable-media[requests].
pip3 install sentry-sdk google-cloud-storage
>>> from google.cloud import storage
md5-cbc1943a1d569f335059802806d81765
/home/laurie/env-tmp/lib/python3.6/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
{
"chardet": {
"version": "3.0.4"
},
"cryptography": {
"version": ""
},
"idna": {
"version": "2.8"
},
"implementation": {
"name": "CPython",
"version": "3.6.7"
},
"platform": {
"release": "4.18.0-17-generic",
"system": "Linux"
},
"pyOpenSSL": {
"openssl_version": "",
"version": null
},
"requests": {
"version": "2.21.0"
},
"system_ssl": {
"version": "1010100f"
},
"urllib3": {
"version": "1.25"
},
"using_pyopenssl": false
}
请注意,修复此问题的拉取请求应关闭 #5065 和 #4961
另请注意,上述复制示例的解决方案是:
pip3 install sentry-sdk google-cloud-storage 'urllib3<1.25'
已经有一个 PR 正在进行中: https ://github.com/kennethreitz/requests/pull/5063
@nateprewitt仅供参考 1.25.2 将很快发布,我建议除了禁止 1.25.0 还禁止 1.25.1?
我们的 CI 管道从 4 月 22 日开始出现错误[integration_py3_docker_metric] 19-04-29:10:26:57 ERROR [clipper_metric_docker.py:127] Failed to parse: http://localhost:44328/api/v1/series?match[]=clipper_mc_parse_time_ms_sum
,从urllib3
版本 1.25 发布开始。 你认为这与这个问题有关吗?
@rkooo567 ,您是否尝试过运行带有额外要求urllib3<1.25
的 CI?
@EpicWink是的。 它似乎解决了一个问题。 我还发现urllib3==1.25.2
也解决了这个问题。
urllib3 1.24.3 已发布,仅修复了 1.24.X 用户的 CRLF 注入问题。
这是一个可能很愚蠢的问题:为什么 requests 将 urllib3 限制为 < 1.25? 由于许多其他 pip 依赖项将继续增加其允许的最低 urllib3 版本,似乎这将保证两件事:
urllib3 是否经常做出让我们担心只是信任他们的版本控制的重大更改? 还是有其他顾虑?
根据其他项目跟踪器中对这个问题的引用数量,我敢肯定还有很多其他项目维护者希望尽快解决这个问题……:)(指出它,因为问题引用没有' t 触发电子邮件通知。)
+1,因为它在某些情况下加剧了Pip 缺乏依赖解析器引起的问题: https ://github.com/pradyunsg/zazo/issues/14
如果你觉得这很有趣,请查看所有使用请求且无法更新 urllib3 的东西。 (我们做一些人工检查)
http://logs.openstack.org/36/658636/3/check/requirements-tox-py27-check-uc/48d2334/job-output.txt.gz#_2019 -05-14_06_33_55_887702
已通过 #5092 解决,现在在 pypi 上发布。 再次感谢@EpicWink
最有用的评论
这是一个可能很愚蠢的问题:为什么 requests 将 urllib3 限制为 < 1.25? 由于许多其他 pip 依赖项将继续增加其允许的最低 urllib3 版本,似乎这将保证两件事:
urllib3 是否经常做出让我们担心只是信任他们的版本控制的重大更改? 还是有其他顾虑?