Saya menggunakan Python 2.7.3 dan Permintaan. Saya menginstal Permintaan melalui pip. Saya percaya ini versi terbaru. Saya menggunakan Debian Wheezy.
Saya telah menggunakan Permintaan berkali-kali di masa lalu dan tidak pernah menghadapi masalah ini, tetapi tampaknya ketika membuat permintaan https dengan Requests
saya mendapatkan InsecurePlatform
pengecualian.
Kesalahan menyebutkan urllib3
, tapi saya tidak menginstalnya. Saya menginstalnya untuk memeriksa apakah itu menyelesaikan kesalahan, tetapi ternyata tidak.
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and
may cause certain SSL connections to fail. For more information, see
https://urllib3.readthedocs.org/en/latest
/security.html#insecureplatformwarning.
Ada ide mengapa saya mendapatkan ini? Saya telah memeriksa dokumen, sebagaimana ditentukan dalam pesan kesalahan, tetapi dokumen tersebut mengatakan untuk mengimpor urllib3 dan menonaktifkan peringatan, atau memberikan sertifikat.
sumber
sudo apt-get install python-dev libffi-dev libssl-dev
pip install 'requests[security]'
Permintaan 2.6 memperkenalkan peringatan ini untuk pengguna python sebelum 2.7.9 dengan modul stok hanya tersedia.
Dengan asumsi Anda tidak dapat memutakhirkan ke versi python yang lebih baru, ini akan menginstal lebih banyak pustaka SSL python yang mutakhir:
NAMUN, ini mungkin gagal pada beberapa sistem tanpa membangun-dependensi untuk pyOpenSSL. Pada sistem debian, menjalankan ini sebelum perintah pip di atas cukup untuk membangun pyOpenSSL:
sumber
Saya tidak menggunakan ini dalam produksi, hanya beberapa pelari uji. Dan untuk mengulangi dokumentasi urllib3
Edit / Perbarui:
Yang berikut ini juga harus berfungsi:
sumber
Jika Anda tidak dapat memutakhirkan versi Python Anda ke 2.7.9, dan ingin menekan peringatan,
Anda dapat menurunkan versi 'permintaan' Anda ke 2.5.3:
Tentang versi: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
sumber
Bahkan, Anda bisa mencoba ini.
requests.post("https://www.google.com", verify=False)
Anda dapat membaca kode untuk permintaan.
"C:\Python27\Lib\site-packages\requests\sessions.py"
sumber
Semua solusi yang diberikan di sini tidak membantu (saya terkendala oleh python 2.6.6). Saya telah menemukan jawabannya dalam saklar sederhana untuk beralih ke pip:
Ini memberitahu pip bahwa tidak apa-apa untuk mengambil modul dari pypi.python.org.
Bagi saya, masalahnya adalah proksi perusahaan saya di balik firewall yang membuatnya tampak seperti klien jahat untuk beberapa server. Keamanan hore.
Pembaruan: Lihat jawaban @Alex untuk perubahan di domain PyPi, dan
--trusted-host
opsi tambahan yang dapat ditambahkan. (Saya akan menyalin / menempel di sini, tetapi jawabannya, jadi memberi +1 padanya)sumber
Jawaban ini tidak terkait, tetapi jika Anda ingin menyingkirkan peringatan dan mendapatkan peringatan berikut dari permintaan:
InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Anda dapat menonaktifkannya dengan menambahkan baris berikut ke kode python Anda:
requests.packages.urllib3.disable_warnings()
sumber
Saya harus pergi ke
bash
(dari ZSH) terlebih dahulu. Kemudianmemperbaiki masalah.
sumber
Ini muncul untuk saya di Ubuntu 14.04 (dengan Python 2.7.6) minggu lalu setelah saya melakukan
apt-get dist-upgrade
itu termasuklibssl1.1:amd64
darideb.sury.org
.Karena saya lari
certbot-auto renew
dari pekerjaan cron, saya juga menggunakan--no-self-upgrade
untuk mengurangi pemeliharaan yang tidak terjadwal. Ini tampaknya menjadi sumber masalah.Untuk memperbaiki kesalahan, semua yang perlu saya lakukan adalah menjadi root (dengan
su
's--login
switch) dan membiarkancertbot-auto
upgrade sendiri. Yaitu:alih-alih apa yang biasanya dijalankan dari crontab root:
Setelah itu, memungkinkan renkripsi enkripsi berjalan normal sekali lagi.
sumber
Bagi saya tidak ada pekerjaan saya perlu upgrade pip ....
Debian / Ubuntu
instal dependensi
perbarui pip dan instal paket
Jika Anda ingin menghapus dependensi
sumber
Saya baru saja mengalami masalah serupa pada server CentOS 5 di mana saya menginstal python 2.7.12 di / usr / local di atas versi python2.7 yang jauh lebih lama. Memutakhirkan ke CentOS 6 atau 7 bukanlah pilihan di server ini sekarang.
Beberapa modul python 2.7 masih ada dari versi python yang lebih lama, tetapi pip gagal untuk memutakhirkan karena paket kriptografi yang lebih baru tidak didukung oleh paket CentOS 5.
Secara khusus, 'pip install request [security]' gagal karena versi openssl pada CentOS 5 adalah 0.9.8e yang tidak lagi didukung oleh kriptografi> 1.4.0.
Untuk mengatasi masalah awal OPs yang saya lakukan:
Kriptografi yang terinstal 1.3.4 ini bekerja dengan openssl-0.9.8e. cryptograpy 1.3.4 juga cukup untuk memenuhi persyaratan untuk perintah berikut.
Perintah ini sekarang dipasang karena tidak mencoba menginstal kriptografi> 1.4.0.
Perhatikan bahwa pada Centos 5 saya juga perlu:
Untuk memungkinkan kriptografi dibangun
sumber
Di bawah ini adalah cara kerjanya untuk saya di Python 3.6:
sumber
Jangan instal pyOpenSSL karena akan segera ditinggalkan. Pendekatan terbaik saat ini adalah-
sumber
jika Anda hanya ingin menghentikan peringatan tidak aman seperti:
melakukan:
adalah kuncinya, berikut ini tidak baik dalam hal itu:
atau
tetapi, Anda HARUS tahu, itu mungkin menyebabkan risiko keamanan potensial .
sumber
Saya memiliki masalah yang sama dengan komunitas
Mac
Pycharm edisi 2019.3
Python interpreter 3.6.
Memutakhirkan pip dengan 20.0.2 bekerja untuk saya.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package
sumber