pip menginstal gagal dengan "koneksi error: [SSL: CERTIFICATE_VERIFY_FAILED] sertifikat verifikasi gagal (_ssl.c:598)"
Saya sangat baru untuk Python dan mencoba untuk > pip menginstal linkchecker
pada Windows 7. Beberapa catatan:
- pip menginstal gagal tidak peduli paket. Misalnya,
> pip menginstal scrapy
juga mengakibatkan kesalahan SSL. - Vanili menginstal Python 3.4.1 termasuk pip 1.5.6. Hal pertama yang saya coba lakukan adalah menginstal linkchecker. Python 2.7 sudah diinstal, itu datang dengan ArcGIS.
python
danpip
tidak tersedia dari baris perintah sampai saya menginstal 3.4.1. > pip pencarian linkchecker
bekerja. Mungkin itu adalah karena pip pencarian tidak memverifikasi situs's sertifikat SSL.- Aku dalam jaringan perusahaan tapi kami tidak pergi melalui proxy untuk mencapai Internet.
- Masing-masing komputer perusahaan (termasuk saya) telah Terpercaya Akar Otoritas Sertifikat yang digunakan untuk berbagai alasan, termasuk memungkinkan pemantauan TLS lalu lintas untuk https://google.com. Tidak yakin jika itu ada hubungannya dengan itu.
Berikut ini adalah isi dari saya pip.log setelah berjalan pip menginstal linkchecker
:
Downloading/unpacking linkchecker
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Getting page https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
Cannot fetch index base URL https://pypi.python.org/simple/
URLs to search for versions for linkchecker:
* https://pypi.python.org/simple/linkchecker/
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
350
32
Anda dapat mengabaikan kesalahan SSL dengan pengaturan
pypi.org
danfiles.pythonhosted.org
dipercaya sebagai tuan rumah.Catatan: kadang-Kadang selama April 2018, Python Paket Index bermigrasi dari
pypi.python.org
untukpypi.org
. Ini berarti "terpercaya-host" perintah menggunakan domain lama tidak lagi bekerja.Perbaikan Permanen
Sejak rilis pip 10.0, anda harus mampu memperbaiki secara permanen hanya dengan meng-upgrade
pip
itu sendiri:Atau dengan hanya menginstal ulang itu mendapatkan versi terbaru:
(... dan kemudian berjalan
get-pip.py
dengan relevan interpreter Python).pip menginstal <otherpackage>
hanya harus bekerja setelah ini. Jika tidak, maka anda akan perlu untuk melakukan lebih banyak, seperti yang dijelaskan di bawah ini.Anda mungkin ingin add trusted host dan proxy untuk anda config.
pip.ini
(Windows) ataupip.conf
(unix)Alternatif Solusi (Kurang aman)
Sebagian besar jawaban yang bisa menimbulkan masalah keamanan.
Dua cara yang membantu dalam menginstal sebagian besar paket python dengan mudah akan sama:
easy_install <package_name>
. Perhatikan bahwa beberapa paket won't dapat ditemukan atau akan memberikan kesalahan-kesalahan kecil.pip menginstal wheel_package_name.whl
untuk menginstal paket.Anda dapat menentukan cert dengan param ini:
Lihat: Docs » Panduan Referensi » pip
Jika anda menentukan perusahaan's root cert doesn't bekerja mungkin cURL yang akan bekerja: http://curl.haxx.se/ca/cacert.pem
Anda harus menggunakan file PEM dan tidak CRT file. Jika anda memiliki CRT file anda akan perlu untuk mengkonversi file untuk PEM Ada laporan di komentar bahwa ini sekarang bekerja dengan CRT file tapi saya belum diverifikasi.
Lihat juga: SSL Cert Verifikasi.
kenorb jawaban ini sangat berguna (dan besar!).
di Antara nya solusi, mungkin ini adalah yang paling sederhana:
--terpercaya-tuan rumah
Sebagai contoh, dalam kasus ini yang dapat anda lakukan
Pem file(atau apa pun) adalah tidak perlu.
Bagi saya masalah itu tetap dengan membuat folder
pip
, dengan file:pip.ini
diC:\Users\<username>\AppData\Roaming\
e.g:Dalam hal ini saya menulis:
Saya restart python, dan kemudian pip secara permanen terpercaya situs tersebut, dan menggunakannya untuk men-download paket dari.
Jika anda dapat't menemukan Folder AppData pada windows, menulis
%appdata%
di file explorer dan itu harus muncul.Jawaban yang sangat mirip dan sedikit membingungkan. Dalam kasus saya, sertifikat di perusahaan saya's jaringan adalah masalah. Saya mampu untuk bekerja di sekitar masalah menggunakan:
Seperti yang terlihat di sini. The-vvv argumen dapat dihilangkan jika verbose output tidak diperlukan
Cara yang paling mudah I've ditemukan, adalah untuk men-download dan gunakan "DigiCert Tinggi Jaminan EV Root CA" dari DigiCert di https://www.digicert.com/digicert-root-certificates.htm#roots
Anda dapat mengunjungi https://pypi.python.org/ untuk memverifikasi cert emiten dengan mengklik ikon kunci di address bar, atau meningkatkan geek cred dengan menggunakan openssl:
Terakhir CN nilai dalam rantai sertifikat adalah nama dari CA yang anda butuhkan untuk men-download.
Untuk satu kali usaha, lakukan hal berikut:
(baris terakhir mengasumsikan anda menggunakan bash shell) sebelum menjalankan pip.
Untuk membuat ini re-usable, menempatkan DigiCertHighAssuranceEVRootCA.crt di tempat umum dan ekspor PIP_CERT sesuai dalam file ~/.bashrc.
Perbaikan Permanen
Untuk misalnya:
Untuk memecahkan masalah ini sekali dan untuk semua, anda dapat memverifikasi bahwa anda memiliki
pip.conf
file.Ini adalah di mana anda
pip.conf
seharusnya, menurut dokumentasi:Di dalam virtualenv:
Anda
pip.conf
akan terlihat seperti:pip menginstal linkchecker
dipasanglinkchecker
tanpa mengeluh setelah aku menciptakanpip.conf
file.Anda've berikut kemungkinan-kemungkinan untuk memecahkan masalah dengan
CERTIFICATE_VERIFY_FAILED
:--cert <terpercaya.pem>
atauCA_BUNDLE
variabel untuk menentukan alternatif CA bundel.E. g. anda dapat pergi untuk gagal URL dari web-browser dan impor sertifikat root ke sistem anda.
python -c "import ssl; print(ssl.get_default_verify_paths())"
untuk memeriksa satu saat (validasi jika ada).SSL_CERT_DIR
,SSL_CERT_FILE
) yang dapat digunakan untuk menentukan berbagai database sertifikatPEP-476.--terpercaya-tuan rumah <hostname>
untuk menandai sebagai tuan rumah terpercaya.memverifikasi=False
untukpermintaan.dapatkan
(lihat: SSL Cert Verifikasi).--rapat umum <proxy>
untuk menghindari pengecekan sertifikat.Baca lebih lanjut di: TLS/SSL wrapper untuk socket benda - Memverifikasi sertifikat.
Mengatur Waktu dan Tanggal yang benar!
Bagi saya, itu datang bahwa saya tanggal dan waktu yang salah pada Raspberry Pi. Hasilnya adalah bahwa semua SSL dan HTTPS koneksi gagal, menggunakan https://files.pythonhosted.org/ server.
Update seperti ini:
bash sudo date-s "Wed Thu 23 11:12:00 GMT+1 2018" sudo dpkg-reconfigure tzdata
Atau langsung dengan misalnya Google's waktu:
Ref.: https://superuser.com/a/635024/935136
bash sudo date-s "$(curl -s --kepala http://google.com | grep ^Tanggal: | sed 's/Tanggal: //g')" sudo dpkg-reconfigure tzdata
Aku baru saja berlari ke dalam masalah ini karena perusahaan saya's web content filter yang menggunakan Sertifikat Otoritas sehingga dapat menyaring lalu lintas SSL. PIP doesn't tampaknya akan menggunakan sistem's sertifikat CA dalam kasus saya, memproduksi kesalahan yang anda sebutkan. Merendahkan PIP ke versi 1.2.1 disajikan mengatur sendiri masalah di kemudian hari, jadi saya kembali ke versi asli yang datang dengan Python 3.4.
Solusi saya adalah cukup sederhana: menggunakan
easy_install
. Baik itu doesn't cek sertifikat (seperti PIP version), atau ia tahu untuk menggunakan sistem sertifikat karena itu bekerja setiap waktu untuk saya dan saya masih bisa menggunakan PIP untuk menghapus paket-paket yang diinstal dengan easy_install.Jika itu doesn't bekerja dan anda bisa mendapatkan akses ke jaringan atau komputer yang doesn't memiliki masalah, anda selalu bisa setup pribadi anda sendiri PyPI server: https://stackoverflow.com/questions/18052217/how-to-create-local-own-pypi-repository-index-without-mirror
Saya hampir melakukan itu sampai aku mencoba menggunakan
easy_install
sebagai usaha terakhir.Anda dapat mencoba untuk melewati SSL error dengan menggunakan http, bukan https. Tentu saja ini tidak optimal dalam hal keamanan, tapi jika anda terburu-buru harus melakukan trik:
Jawaban untuk menggunakan
bekerja. Tapi anda'll harus memeriksa apakah ada pengalihan atau cache
pip
memukul. Pada Windows 7 denganpip 9.0.1
, aku harus lariAnda dapat menemukan ini dengan verbose bendera.
Anda memiliki 4 pilihan:
Dengan menggunakan sertifikat sebagai parameter
Dengan menggunakan sertifikat di pip.conf`
Membuat file ini:
dan tambahkan baris ini:
Mengabaikan sertifikat dan menggunakan HTTP
Mengabaikan sertifikat dan menggunakan HTTP di pip.conf
Membuat file ini:
dan tambahkan baris ini:
Sumber
Saya telah menginstal pip 1.2.1 dengan easy_install dan upgrade ke versi terbaru dari pip (6.0.7 pada waktu itu) yang mampu menginstal paket-paket di kasus saya.
Pertama-tama,
tidak bekerja untuk saya. Aku terus mendapatkan CERTIFICATE_VERIFY_FAILED kesalahan. Namun, saya melihat di pesan kesalahan yang mereka direferensikan 'pypi.org' situs. Jadi, saya menggunakan ini sebagai trusted nama host bukan pypi.python.org. Yang hampir saja aku di sana; beban masih gagal dengan CERTIFICATE_VERIFY_FAILED, tetapi pada suatu titik kemudian. Mencari referensi ke situs web yang gagal, saya termasuk itu dipercaya sebagai tuan rumah. Apa yang akhirnya bekerja untuk saya adalah:
Punya masalah yang sama mencoba
pip menginstal ftputil
dengan ActivePython 2.7.8, ActivePython 3.4.1, dan "saham" Python 3.4.2 pada 64-bit Windows 7 Enterprise. Semua upaya gagal dengan kesalahan yang sama seperti OP.Bekerja di sekitar masalah untuk Python 3.4.2 oleh merendahkan untuk pip 1.2.1:
easy_install pip==1.2.1
(lihat https://stackoverflow.com/a/16370731/234235). Sama memperbaiki juga bekerja untuk ActivePython 2.7.8.Bug, dilaporkan pada bulan Maret 2013, masih terbuka: https://github.com/pypa/pip/issues/829.
I'm tidak yakin jika ini adalah yang terkait, tapi aku punya masalah yang sama yang tetap dengan menyalin file-file dari Anaconda3/Perpustakaan/bin untuk Anaconda3/Dll :
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
Ada di halaman ini bekerja untuk saya sampai saya menggunakan --verbose untuk melihat bahwa ia ingin sampai ke files.pythonhosted.org daripada pypi.python.org:
Jadi periksa URL yang's benar-benar gagal pada melalui --verbose pilihan.
Saya memecahkan masalah ini dengan menghapus pip saya dan menginstal versi yang lebih tua dari pip: https://pypi.python.org/pypi/pip/1.2.1