Unterstützung für urllib3
v1.25 (heute/gestern veröffentlicht). Das übliche yada-yada „mein CI ist kaputt“.
Mehrere Pakete, von denen wir abhängen (z. B. google.cloud.storage
, azure.storage
), haben eine strenge Versionsprüfung für requests
mit pkg_resources.require('requests >= 2.18.0')
. Alle nicht erfüllten Abhängigkeiten in der folgenden Kette einschließlich requests
führen dazu, dass die Prüfung fehlschlägt und eine Ausnahme auslöst. urllib3<1.25
ist derzeit eine solche Abhängigkeit.
Beim Import wurde keine Ausnahme ausgelöst
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
}
Beachten Sie, dass ein Pull-Request, der dies behebt, #5065 und #4961 schließen sollte
Beachten Sie auch, dass eine Lösung für das obige Reproduktionsbeispiel ist:
pip3 install sentry-sdk google-cloud-storage 'urllib3<1.25'
Es ist bereits eine PR in Arbeit: https://github.com/kennethreitz/requests/pull/5063
Für diejenigen, die zuschauen, wie bereits erwähnt , wir sind auf urllib3
v1.25.2 blockiert
@nateprewitt FYI 1.25.2 wird sehr bald veröffentlicht, ich würde empfehlen, zusätzlich zum Verbieten von 1.25.0 auch 1.25.1 zu verbieten?
Unsere CI-Pipeline beginnt ab dem 22. April, ab dem Zeitpunkt der Veröffentlichung von urllib3
Version 1.25, einen Fehler [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
zu erhalten. Glauben Sie, dass dies mit diesem Problem zusammenhängt?
@rkooo567 , haben Sie versucht, das CI mit der zusätzlichen Anforderung urllib3<1.25
auszuführen?
@EpicWink Ja. Und es scheint, als würde es ein Problem lösen. Ich fand auch heraus, dass urllib3==1.25.2
das Problem ebenfalls löst.
urllib3 1.24.3 wurde veröffentlicht, das nur das CRLF-Injection-Problem für 1.24.X-Benutzer behebt.
Hier ist eine möglicherweise dumme Frage: Warum beschränken Anfragen urllib3 auf < 1,25? Da viele andere Pip-Abhängigkeiten ihre minimal zulässige urllib3-Version weiter erhöhen werden, scheint dies zwei Dinge zu garantieren:
Nimmt urllib3 so oft Breaking Changes vor, dass wir uns Sorgen machen, nur ihrer Versionierung zu vertrauen? Oder gibt es eine andere Sorge?
Basierend auf der Anzahl der Verweise auf dieses Problem in den Trackern anderer Projekte, bin ich sicher, dass es viele andere Projektbetreuer gibt, die eine Lösung für dieses Problem eher früher als später begrüßen würden ... :) (Ich weise darauf hin, da Verweise auf Probleme nicht keine E-Mail-Benachrichtigungen auslösen.)
+1, weil es in einigen Fällen Probleme verschlimmert, die durch das Fehlen eines Dependency-Resolvers von Pip verursacht werden: https://github.com/pradyunsg/zazo/issues/14
Wenn Sie denken, dass das Spaß macht, schauen Sie sich all die Dinge an, die Anfragen verwenden und urllib3 nicht aktualisieren können. (wir führen einige manuelle Überprüfungen durch)
Gelöst mit #5092, Release ist jetzt auf pypi. Nochmals vielen Dank @EpicWink
Hilfreichster Kommentar
Hier ist eine möglicherweise dumme Frage: Warum beschränken Anfragen urllib3 auf < 1,25? Da viele andere Pip-Abhängigkeiten ihre minimal zulässige urllib3-Version weiter erhöhen werden, scheint dies zwei Dinge zu garantieren:
Nimmt urllib3 so oft Breaking Changes vor, dass wir uns Sorgen machen, nur ihrer Versionierung zu vertrauen? Oder gibt es eine andere Sorge?