Requests: urllib3 v1.25 dukungan

Dibuat pada 23 Apr 2019  ·  15Komentar  ·  Sumber: psf/requests

Dukungan untuk urllib3 v1.25 (dirilis hari ini/kemarin). Yada-yada yang biasa "CI saya rusak".

Beberapa paket yang kami andalkan (misalnya google.cloud.storage , azure.storage ) memiliki pemeriksaan versi yang ketat pada requests menggunakan pkg_resources.require('requests >= 2.18.0') . Setiap dependensi yang tidak terpenuhi dalam rantai di bawah ini dan termasuk requests akan menyebabkan pemeriksaan gagal dan memunculkan pengecualian. urllib3<1.25 saat ini merupakan salah satu ketergantungan tersebut.

Hasil yang diharapkan

Tidak terkecuali yang dimunculkan pada impor

Hasil Sebenarnya

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].

Langkah Reproduksi

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
}

Komentar yang paling membantu

Inilah pertanyaan yang mungkin bodoh: mengapa permintaan membatasi urllib3 menjadi <1,25? Karena banyak dependensi pip lainnya akan terus meningkatkan versi urllib3 minimum yang diizinkan, sepertinya ini akan menjamin dua hal:

  1. Setiap versi minor yang muncul di urllib3 akan merusak banyak proyek yang bergantung pada permintaan (misalnya siapa saja yang menggunakan paket utama Google atau Microsoft Azure, di antara banyak lainnya).
  2. Setiap versi minor yang muncul di urllib3 kemudian akan memerlukan rilis permintaan baru untuk mengizinkan versi baru urllib3.

Apakah urllib3 membuat perubahan yang sering membuat kami khawatir hanya dengan mempercayai versi mereka? Atau ada kekhawatiran lain?

Semua 15 komentar

Perhatikan bahwa perbaikan permintaan tarik ini harus menutup #5065 dan #4961

Perhatikan juga bahwa solusi untuk contoh reproduksi di atas adalah:

pip3 install sentry-sdk google-cloud-storage 'urllib3<1.25'

Sudah ada PR yang sedang dikerjakan: https://github.com/kennethreitz/requests/pull/5063

Bagi mereka yang menonton, seperti yang disebutkan , kami diblokir di urllib3 v1.25.2

@nateprewitt FYI 1.25.2 akan segera dirilis, saya akan merekomendasikan selain melarang 1.25.0 juga melarang 1.25.1?

Pipa CI kami mulai mendapatkan kesalahan [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 dari 22 April, sejak urllib3 versi 1.25 dirilis. Apakah Anda pikir ini terkait dengan masalah ini?

@rkooo567 , sudahkah Anda mencoba menjalankan CI dengan persyaratan tambahan urllib3<1.25 ?

@EpicWink Ya. Dan sepertinya itu menyelesaikan masalah. Saya juga menemukan urllib3==1.25.2 juga menyelesaikan masalah.

urllib3 1.24.3 telah dirilis yang hanya memperbaiki masalah injeksi CRLF untuk pengguna 1.24.X.

Inilah pertanyaan yang mungkin bodoh: mengapa permintaan membatasi urllib3 menjadi <1,25? Karena banyak dependensi pip lainnya akan terus meningkatkan versi urllib3 minimum yang diizinkan, sepertinya ini akan menjamin dua hal:

  1. Setiap versi minor yang muncul di urllib3 akan merusak banyak proyek yang bergantung pada permintaan (misalnya siapa saja yang menggunakan paket utama Google atau Microsoft Azure, di antara banyak lainnya).
  2. Setiap versi minor yang muncul di urllib3 kemudian akan memerlukan rilis permintaan baru untuk mengizinkan versi baru urllib3.

Apakah urllib3 membuat perubahan yang sering membuat kami khawatir hanya dengan mempercayai versi mereka? Atau ada kekhawatiran lain?

Berdasarkan jumlah referensi untuk masalah ini di pelacak proyek lain, saya yakin ada banyak pengelola proyek lain yang akan menghargai resolusi ini lebih cepat daripada nanti… :) (Menunjukkannya karena referensi masalah tidak ' t memicu pemberitahuan email.)

+1 karena memperburuk masalah yang disebabkan oleh kurangnya pemecah ketergantungan Pip dalam beberapa kasus: https://github.com/pradyunsg/zazo/issues/14

Jika menurut Anda itu menyenangkan, lihat semua hal yang menggunakan permintaan dan tidak dapat memperbarui urllib3. (kami melakukan beberapa pemeriksaan manual)

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

Diselesaikan dengan #5092, rilis sudah ada di pypi sekarang. Terima kasih sekali lagi @EpicWink

Apakah halaman ini membantu?
0 / 5 - 0 peringkat