instalasi pip gagal dengan "kesalahan koneksi: [SSL: CERTIFICATE_VERIFY_FAILED] gagal memverifikasi sertifikat (_ssl.c: 598)"

397

Saya sangat baru di Python dan mencoba > pip install linkcheckerdi Windows 7. Beberapa catatan:

  • instalasi pip gagal terlepas dari paket. Misalnya, > pip install scrapyjuga menghasilkan kesalahan SSL.
  • Instal vanilla dari Python 3.4.1 termasuk pip 1.5.6. Hal pertama yang saya coba lakukan adalah memasang linkchecker. Python 2.7 sudah diinstal, ia datang dengan ArcGIS. pythondan piptidak tersedia dari baris perintah sampai saya menginstal 3.4.1.
  • > pip search linkcheckerbekerja. Mungkin itu karena pencarian pip tidak memverifikasi sertifikat SSL situs.
  • Saya berada di jaringan perusahaan tetapi kami tidak melalui proxy untuk mencapai Internet.
  • Setiap komputer perusahaan (termasuk komputer saya) memiliki Otoritas Sertifikat Root Tepercaya yang digunakan karena berbagai alasan termasuk memungkinkan pemantauan lalu lintas TLS ke https://google.com . Tidak yakin apakah itu ada hubungannya dengan itu.

Berikut adalah isi dari pip.log saya setelah dijalankan pip install 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
Jeremy Cook
sumber
1
Justru sebaliknya! Python 3.4.1 dan sebelumnya tidak melakukan validasi sertifikat secara default. Jika Anda menggunakan Python 3.4.2, saya akan berpikir itu masalahnya. (Lihat edisi 21013 dan utas ini di milis . Perhatikan bahwa itu adalah awal utas yang cukup panjang.) Maaf saya tidak bisa membantu!
Cody Piersall
3
Periksa apakah Anda memiliki fiddler yang dibuka dan tutup. Fiddler mencoba memecah SSL dan ini memecah pip, ketika saya menutup pip fiddler bekerja untuk saya. Ketika saya menutup pemain biola saya, semuanya berjalan baik
José Barbosa

Jawaban:

641

-----> pip instal gensim config --global http.sslTerverifikasi salah

Cukup instal paket apa pun dengan pernyataan "config --global http.sslVerify false"

Anda dapat mengabaikan kesalahan SSL dengan menetapkan pypi.orgdan files.pythonhosted.orgsebagai host tepercaya.

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

Catatan : Suatu saat selama April 2018, Indeks Paket Python dimigrasikan dari pypi.python.orgke pypi.org. Ini berarti perintah "tuan rumah tepercaya" menggunakan domain lama tidak lagi berfungsi.

Perbaikan Permanen

Sejak rilis pip 10.0, Anda harus dapat memperbaikinya secara permanen hanya dengan memutakhirkan pipsendiri:

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

Atau hanya dengan menginstal ulang untuk mendapatkan versi terbaru:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(... dan kemudian jalankan get-pip.pydengan interpreter Python yang relevan).

pip install <otherpackage>seharusnya hanya bekerja setelah ini. Jika tidak, maka Anda perlu melakukan lebih banyak, seperti yang dijelaskan di bawah ini.


Anda mungkin ingin menambahkan host dan proxy tepercaya ke file konfigurasi Anda .

pip.ini(Windows) atau pip.conf(unix)

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Solusi Alternatif (Kurang aman)

Sebagian besar jawaban dapat menimbulkan masalah keamanan.

Dua dari solusi yang membantu dalam menginstal sebagian besar paket python dengan mudah adalah:

  • Menggunakan easy_install : jika Anda benar-benar malas dan tidak ingin membuang banyak waktu, gunakan easy_install <package_name>. Perhatikan bahwa beberapa paket tidak akan ditemukan atau akan memberikan kesalahan kecil.
  • Menggunakan Roda : unduh Roda paket python dan gunakan perintah pip pip install wheel_package_name.whluntuk menginstal paket.
Vaulstein
sumber
7
Pembaruan Anda membantu saya. Dalam kasus saya, firewall perusahaan memasukkan dirinya sebagai host tepercaya untuk koneksi SSL. Saya berasumsi pengaturan proxy salah, tetapi menambahkan verbose menunjukkan masalahnya adalah SSL. Perubahan indeks-url mengatasi masalah ini.
peater
11
Luar biasa, terima kasih! Tuan rumah tepercaya tampaknya cukup, yaitu. pip install --trusted-host pypi.python.org pypi_package. Menggunakan --verbosemenunjukkan bahwa tanpa --trusted-host, koneksi HTTPS gagal, sedangkan koneksi HTTPS yang sama dicoba (bukan HTTP) dengan --trusted-hosttetapi berhasil.
Oliver
12
Bukankah menggunakan versi HTTP (dan bahkan mempercayainya) juga merupakan risiko keamanan?
Paŭlo Ebermann
3
Anda dapat membuatnya sebagai singkat untuk mengabaikan parameter --index-url, coba perintah ini juga harus ok:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu
8
itu tidak bekerja untuk saya. Menjalankan mac os sierra tinggi pada macbookpro 15 "Python 2.7 pip 9.0.1 Saya Mencoba keduanya: sudo -H pip install --trust-host pypi.python.org numpy dan sudo pip install --trust-host pypi.python.org numpy selalu memberi saya kesalahan yang sama: "Ada masalah mengonfirmasi sertifikat ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 versi protokol peringatan (_ssl.c: 661) - melompati Tidak dapat menemukan versi yang memenuhi persyaratan"
DaniPaniz
123

Anda dapat menentukan sertifikat dengan param ini:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Lihat: Dokumen »Panduan Referensi» pip

Jika menentukan sertifikat root perusahaan Anda tidak berfungsi, mungkin yang CURL akan berfungsi: http://curl.haxx.se/ca/cacert.pem

Anda harus menggunakan file PEM dan bukan file CRT. Jika Anda memiliki file CRT, Anda harus mengonversi file ke PEM. Ada laporan di komentar bahwa ini sekarang berfungsi dengan file CRT tetapi saya belum memverifikasi.

Juga periksa: Verifikasi Sertifikat SSL .

Steve Tauber
sumber
1
Curl one aman. Saya sarankan menggunakan itu.
Steve Tauber
1
@JeremyCook itu bisa jadi waktu di server Anda, jika sudah di masa lalu itu bisa menjadi proses verifikasi
Giovanni Bitliner
1
Format CRT tidak didukung, hanya format PEM. Anda perlu mengonversi format CRT ke PEM menggunakan openssl. Anda juga harus memverifikasi bahwa bundel yang telah Anda unduh berisi CA root yang benar. Silakan lihat jawaban saya di atas untuk perincian: stackoverflow.com/a/28724886/41957 .
chnrxn
1
@ JeremyCook, PEM / sertifikat tidak datang langsung dari pihak ketiga yang Anda unduh. Mereka mengumpulkan sertifikat dari sumber aslinya. Tidak mungkin bagi pihak ke-3 untuk menghasilkan sertifikat orang lain kecuali mereka memiliki kunci yang benar (yang hanya dimiliki oleh orang lain).
chnrxn
4
@endolith - Melihat pip.pypa.io/en/stable/user_guide/#configuration sepertinya Anda dapat menggunakan variabel lingkungan, atau pip.conffile untuk direferensikan secara permanen tanpa menentukan perintah
Cinderhaze
63

Jawaban kenorb sangat berguna (dan hebat!).
Di antara solusinya, mungkin ini yang paling sederhana: --trusted-host

Misalnya, dalam hal ini yang bisa Anda lakukan

pip install --trusted-host pypi.python.org linkchecker

File pem (atau apa pun) tidak perlu.

plhn
sumber
Ini juga berfungsi untuk perintah lain sepertipip list --trusted-host pypi.python.org --outdated
Igor
61

Bagi saya masalahnya sudah diperbaiki dengan membuat folder pip, dengan file: pip.ini di C:\Users\<username>\AppData\Roaming\ misalnya:

C:\Users\<username>\AppData\Roaming\pip\pip.ini

Di dalamnya saya menulis:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Saya memulai kembali python, dan kemudian memip secara permanen mempercayai situs-situs ini, dan menggunakannya untuk mengunduh paket dari.

Jika Anda tidak dapat menemukan Map AppData di windows, tulis %appdata%di file explorer dan itu akan muncul.

pengguna2673238
sumber
Anehnya ini tidak membantu pada mesin Win10 saya: /
mcandre
1
Di tempat kerja, lingkungan Windows 10, menggunakan emulator konsol Cmder. --trusted-host yang digunakan untuk menyelesaikan masalah "'SSLError (SSLCertVerificationError (1,' [SSL: CERTIFICATE_VERIFY_FAILED] gagal memverifikasi: sertifikat yang ditandatangani sendiri dalam rantai sertifikat". Hari ini berhenti bekerja. Saya meletakkan salinan folder pipa saya ( diambil dari ../AppData/Local/) di ../AppData/Roaming/ dan semuanya beres dengan dunia python lokal saya
lagi.Terima
1
Bagus! Terima kasih banyak. --trusted-host tidak bekerja untuk saya sekarang, tetapi solusi Anda membantu.
Alexander Prokofyev
1
Mengapa ini tidak diunduh saat menginstal Python>
98Ed
Luar biasa! Saya sedang mencari kesalahan yang berhubungan dengan GIT, proksi perusahaan, SSL dan itu hanya terkait pip. Terima kasih dan saya harap komentar ini membawa orang-orang bingung seperti saya.
negas
41

Jawabannya sangat mirip dan agak membingungkan. Dalam kasus saya, sertifikat di jaringan perusahaan saya adalah masalahnya. Saya dapat mengatasi masalah menggunakan:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Seperti yang terlihat di sini . Argumen -vvv dapat dihilangkan jika output verbose tidak diperlukan

Koji D'infinte
sumber
10
Hanya satu yang memperbaiki masalah saya, terima kasih.
Gringo Suave
Luar biasa, satu-satunya yang bekerja untuk saya juga!
ethikz
Berfungsi karena hari ini saya berada di belakang beberapa proxy yang menghapus SSL normal. Saya biasanya tidak perlu menentukan host tepercaya ketika orang dewasa menjalankan jaringan.
MrChrister
ini bekerja untuk saya juga. di atas tidak bekerja
Srinath Ganesh
32

Perbaikan Permanen

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

Untuk misalnya:

pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Devesh Sharma
sumber
24

Untuk mengatasi masalah ini sekali dan untuk semua, Anda dapat memverifikasi bahwa Anda memiliki pip.conffile.

Di sinilah pip.confseharusnya Anda berada, sesuai dengan dokumentasi :

Pada Unix file konfigurasi default adalah: $HOME/.config/pip/pip.confyang menghormati variabel lingkungan XDG_CONFIG_HOME.

Pada macOS, file konfigurasi adalah $HOME/Library/Application Support/pip/pip.confjika direktori $HOME/Library/Application Support/pipada$HOME/.config/pip/pip.conf

Di Windows, file konfigurasi adalah %APPDATA%\pip\pip.ini.

Di dalam virtualenv:

Pada Unix dan macOS file tersebut $VIRTUAL_ENV/pip.conf

Pada Windows file tersebut adalah: %VIRTUAL_ENV%\pip.ini

Anda pip.confakan terlihat seperti:

[global]
trusted-host = pypi.python.org

pip install linkcheckerdiinstal linkcheckertanpa mengeluh setelah saya membuat pip.conffile.

Alex-Antoine Fortin
sumber
1
$ HOME / Perpustakaan / Dukungan Aplikasi / pip tidak ada di mesin saya, apakah ada lokasi alternatif?
42shadow42
Sepertinya pippanduan pengguna telah diperbarui sejak ketika saya memposting jawaban ini. Saya memperbarui jawaban saya untuk macOS. Apakah ini membantu?
Alex-Antoine Fortin
Tidak mempengaruhi kesalahan SSL pada mesin Win10 saya: /
mcandre
Tidak memperbaiki masalah pada MacOSX.
MoDJ
Saya menggunakan MacOS. Jika Anda menginstal menggunakan python3 brewmaka pastikan Anda menggunakan pip3dan membuat pip.confas $HOME/.config/pip/pip.conf. Saya bekerja untuk saya.
anu
23

Cara paling mudah yang saya temukan, adalah mengunduh dan menggunakan "DigiCert High Assurance EV Root CA" dari DigiCert di https://www.digicert.com/digicert-root-certificates.htm#roots

Anda dapat mengunjungi https://pypi.python.org/ untuk memverifikasi penerbit sertifikat dengan mengklik ikon kunci di bilah alamat, atau menambah kredibilitas geek Anda dengan menggunakan openssl:

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

Nilai CN terakhir dalam rantai sertifikat adalah nama CA yang perlu Anda unduh.

Untuk upaya satu kali, lakukan hal berikut:

  1. Unduh CRT dari DigiCert
  2. Ubah format CRT menjadi PEM
  3. Ekspor variabel lingkungan PIP_CERT ke jalur file PEM

(baris terakhir mengasumsikan Anda menggunakan bash shell) sebelum menjalankan pip.

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

Untuk membuat ini dapat digunakan kembali, letakkan DigiCertHighAssuranceEVRootCA.crt di tempat yang umum dan ekspor PIP_CERT yang sesuai di ~ / .bashrc Anda.

chnrxn
sumber
4
Menggunakan jawaban Anda untuk mengekspor root CA perusahaan kami ke variabel PIP_CERT dan akhirnya setelah mencoba yang lain termasuk 'pip --cert cert.pem' jalan Anda ... hanya pip instal paket. BIG +1 - ya kami memiliki firewal / proxy / utm.
Marlon
Ini masih gagal untuk saya di Mac Mojave. Saya mengikuti persis 3 langkah dan masih saya dapatkan "Kesalahan: pip dikonfigurasi dengan lokasi yang memerlukan TLS / SSL, namun modul ssl dengan Python tidak tersedia". Saya mencoba semua opsi --trusted-host dan --cert dan pip tidak akan berfungsi. Saya mencoba memutakhirkan pip dan mendapat kesalahan SSL. Saya menginstal pip dari awal dengan curl dan saya masih mendapatkan error ketika saya menjalankan pip. Waktu untuk membuang pip dan tetap pada conda :(
user1255933
21

Anda memiliki kemungkinan berikut untuk menyelesaikan masalah dengan CERTIFICATE_VERIFY_FAILED:

  • Gunakan HTTP alih-alih HTTPS (mis --index-url=http://pypi.python.org/simple/.).
  • Gunakan --cert <trusted.pem>atau CA_BUNDLEvariabel untuk menentukan bundel CA alternatif.

    Misalnya Anda dapat membuka URL yang gagal dari browser web dan mengimpor sertifikat root ke sistem Anda.

  • Jalankan python -c "import ssl; print(ssl.get_default_verify_paths())"untuk memeriksa yang sekarang (validasi jika ada).

  • OpenSSL memiliki sepasang lingkungan ( SSL_CERT_DIR, SSL_CERT_FILE) yang dapat digunakan untuk menentukan basis data sertifikat PEP-476 yang berbeda .
  • Gunakan --trusted-host <hostname>untuk menandai host sebagai tepercaya.
  • Dalam penggunaan Python verify=Falseuntuk requests.get(lihat: Verifikasi Sertifikat SSL ).
  • Gunakan --proxy <proxy>untuk menghindari cek sertifikat.

Baca lebih lanjut di: TLS / SSL wrapper untuk objek soket - Memverifikasi sertifikat .

kenorb
sumber
Dari poin pertama Anda, bagaimana cara menentukan HTTP dengan perintah pip?
rayzinnz
1
@rayzinnz Saya telah menambahkan contoh.
kenorb
16

Atur Waktu dan Tanggal dengan benar!

Bagi saya, ternyata tanggal dan waktu saya salah dikonfigurasi pada Raspberry Pi. Hasilnya adalah semua koneksi SSL dan HTTPS gagal, menggunakan server https://files.pythonhosted.org/ .

Perbarui seperti ini:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

Atau langsung dengan misalnya waktu Google:

Ref .: https://superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata
Thomas Devoogdt
sumber
Membuatku gila selama berjam-jam - terima kasih untuk itu. Waktu PI dimatikan oleh 10-hari bagi saya menyebabkan (akan muncul) semua jenis kesalahan selama instalasi pip.
SteveJ
13

Saya baru-baru ini mengalami masalah ini karena filter konten web perusahaan saya yang menggunakan Otoritas Sertifikat sendiri sehingga dapat menyaring lalu lintas SSL. PIP tampaknya tidak menggunakan sertifikat CA sistem dalam kasus saya, menghasilkan kesalahan yang Anda sebutkan. Menurunkan versi PIP ke versi 1.2.1 menyajikan masalah sendiri di kemudian hari, jadi saya kembali ke versi asli yang menyertai Python 3.4.

Solusi saya cukup sederhana: gunakan easy_install. Entah itu tidak memeriksa sertifikat (seperti versi PIP lama), atau ia tahu untuk menggunakan sertifikat sistem karena berfungsi setiap saat untuk saya dan saya masih dapat menggunakan PIP untuk menghapus paket yang diinstal dengan easy_install.

Jika itu tidak berhasil dan Anda bisa mendapatkan akses ke jaringan atau komputer yang tidak memiliki masalah, Anda selalu dapat mengatur server PyPI pribadi Anda: bagaimana cara membuat indeks repositori pypi sendiri tanpa mirror?

Saya hampir melakukannya sampai saya mencoba menggunakan easy_installsebagai upaya terakhir.

Ross Peoples
sumber
Masalah yang sama di sini. Solusi lain adalah mengekspor sertifikat root perusahaan sebagai file dan meminta pipuntuk menggunakannya --cert MyCompanyRootCA.crt.
glibdud
10

Anda dapat mencoba mem-bypass kesalahan SSL dengan menggunakan http, bukan https. Tentu saja ini tidak optimal dalam hal keamanan , tetapi jika Anda terburu-buru harus melakukan trik:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Augusto Destrero
sumber
1
Saya mengharapkan saran Anda untuk bekerja. Gila saya mendapat kesalahan yang sama persis termasuk yang pertamaCould not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Jeremy Cook
3
Oke, jadi solusi lain adalah mengunduh paket tar.gz yang tersedia di sini pypi.python.org/pypi/LinkChecker/9.3 dan menginstalnya dengan: pip install LinkChecker-9.3.tar.gz
Augusto Destrero
3
Tetapi jika paket yang ingin Anda instal memiliki dependensi, Anda harus mengunduh dan menginstal semua dependensi, jika jumlahnya banyak, ini bisa menjadi mimpi buruk.
Augusto Destrero
1
Bagi saya, saya harus mengunduh whl (untuk kasus kasus saya) dan menginstalnya. Ini mengambil dependensi yang tidak dikumpulkan oleh tar.gz ... Jadi, mungkin whl adalah pilihan lain di sepanjang baris @baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl Bagi saya tidak ada yang berhasil: 1. --cac cacert.pem 2. mengekspor sertifikat perusahaan, mengonversi ke PEM 3. easy_install di cygwin 4. --trust-host
charo
1
Sekarang rindu bekerja pada 2017 - Akses HTTP telah sepenuhnya terputus. mail.python.org/pipermail/distutils-sig/2017-Oktober/…
gbtimmon
8

Jawaban untuk digunakan

pip install --trusted-host pypi.python.org <package>

kerja. Tetapi Anda harus memeriksa apakah ada arahan ulang atau cache pipyang menabrak. Pada Windows 7 dengan pip 9.0.1, saya harus menjalankan

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \
  <package>

Anda dapat menemukan ini dengan bendera verbose.

pmbotter
sumber
7

Saya menginstal pip 1.2.1 dengan easy_install dan ditingkatkan ke versi terbaru pip (6.0.7 pada saat itu) yang dapat menginstal paket dalam kasus saya.

easy_install pip==1.2.1
pip install --upgrade pip
theofanis
sumber
7

Anda memiliki 4 opsi:

Menggunakan sertifikat sebagai parameter

$ pip install --cert /path/to/mycertificate.crt linkchecker

Menggunakan sertifikat dalam a pip.conf

Buat file ini:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

dan tambahkan baris ini:

[global]
cert = /path/to/mycertificate.crt

Mengabaikan sertifikat dan menggunakan HTTP

$ pip install --trusted-host pypi.python.org linkchecker

Mengabaikan sertifikat dan menggunakan HTTP di pip.conf

Buat file ini:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

dan tambahkan baris ini:

[global]
trusted-host = pypi.python.org

Sumber

Thiago Falcao
sumber
6

Pertama-tama,

    pip install --trusted-host pypi.python.org <package name>

tidak bekerja untuk saya. Saya terus mendapatkan kesalahan CERTIFICATE_VERIFY_FAILED. Namun, saya perhatikan dalam pesan kesalahan bahwa mereka mereferensikan situs 'pypi.org'. Jadi, saya menggunakan ini sebagai nama host tepercaya alih-alih pypi.python.org. Itu hampir membuat saya di sana; beban masih gagal dengan CERTIFICATE_VERIFY_FAILED, tetapi pada titik berikutnya. Mencari referensi ke situs web yang gagal, saya memasukkannya sebagai tuan rumah tepercaya. Apa yang akhirnya berhasil bagi saya adalah:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
Pat B.
sumber
5

Saya tidak yakin apakah ini terkait, tetapi saya memiliki masalah serupa yang diperbaiki dengan menyalin file-file ini dari Anaconda3 / Library / bin ke Anaconda3 / DLLs:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Dingin
sumber
Dengan Anaconda 2019.03 Saya telah menyalin file berikut dari <folder Anaconda3> / Library / bin ke <Anaconda3> / DLL libcrypto-1_1-x64.dll libcrypto-1_1-x64.dll libssh2.dll libssl-1_1-x64.dll libssl- 1_1-x64.pdb Kemudian saya menambahkan kesalahan ConnectTimeout, jadi konfigurasi proxy yang diperbarui .condarc
MordicusEtCubitus
Bekerja Astaga, kau GENIUS! Saya telah menjelajahi forum selama 1,5 jam, hanya untuk menemukan solusi sederhana yang diremehkan dan sederhana ini.
ivan866
4

Punya masalah yang sama mencoba pip install ftputildengan ActivePython 2.7.8, ActivePython 3.4.1, dan "stock" Python 3.4.2 pada 64-bit Windows 7 Enterprise. Semua upaya gagal dengan kesalahan yang sama seperti OP.

Mengatasi masalah Python 3.4.2 dengan menurunkan versi ke pip 1.2.1: easy_install pip==1.2.1(lihat https://stackoverflow.com/a/16370731/234235 ). Perbaikan yang sama juga bekerja untuk ActivePython 2.7.8.

Bug yang dilaporkan pada Maret 2013 masih terbuka: https://github.com/pypa/pip/issues/829 .

psteiner
sumber
Ini juga bekerja untuk saya. Sementara itu mungkin tampak seperti ide yang buruk di tempat pertama untuk menurunkan versi ke versi pip yang lebih lama, saya berurusan dengan paket Django lama sehingga versi pip lama benar-benar cocok dengan paket lainnya.
mknaf
Masalah 829 sekarang ditutup.
Ortomala Lokni
3

Tidak ada di halaman ini yang berfungsi untuk saya sampai saya menggunakan opsi --verbose untuk melihat bahwa ia ingin membuka files.pythonhosted.org daripada pypi.python.org:

pip install --trusted-host files.pythonhosted.org <package_name>

Jadi, periksa URL yang sebenarnya gagal melalui opsi --verbose.

Dan Austin
sumber
2

Saya memecahkan masalah ini dengan menghapus pip saya dan menginstal versi pip yang lebih lama: https://pypi.python.org/pypi/pip/1.2.1

pengguna3080641
sumber
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
apomene
@apakah seharusnya OP include the essential parts of the answer herekarena ini adalah tautan ke file biner ...?
Thomas Ayoub
@ThomasAyoub, saya percaya Anda sudah tahu, bahwa pesan di atas auto diisi dari SO, ketika lesu jawaban sebagai link hanya jawaban
apomene
@apakah yang tidak menjawab pertanyaan saya, saya masih tidak melihat apa yang bisa / harus ditambahkan OP?
Thomas Ayoub
1
@ThomasAyoub, Untuk menguraikan lebih jauh, komentar saya (SO) menunjukkan bahwa pertanyaan itu pendek dan hanya tautan, artinya lebih baik menjadi komentar. Maksud saya bukan untuk secara eksplisit menyatakan bahwa OP harus menambahkan detail yang menyesali tautan, tetapi detail tentang mengapa ini menjawab pertanyaan.
peristiwa
2

Anda dapat mencoba ini untuk mengabaikan "https":

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]
Smaillns
sumber
1
jika Anda bahkan memiliki masalah lain dengan versi pip Anda dapat mencoba ini pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns
2

Salah satu solusi ( untuk Windows ) adalah membuat file yang dipanggil pip.inipada %AppData%\pip\folder (buat folder jika tidak ada) dan masukkan detail berikut:

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

... dan kemudian kita dapat menjalankan instruksi instalasi:

pip3 install PyQt5

Pilihan lain adalah menginstal paket menggunakan argumen untuk proksi dan sertifikat ...

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

Untuk mengonversi *.cerfile sertifikat ke *.pemformat yang diperlukan, jalankan instruksi berikut:

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

Semoga ini bisa membantu seseorang!

Marco
sumber
1
Untuk OS lainnya, lihat jawaban Alex-Antoine Fortin
Dinei
Tidak perlu proxy, hanya sertifikat. Saya berlari; pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2
2

Dalam kasus saya, itu karena sertifikat SSL ditandatangani oleh CA internal perusahaan saya. Menggunakan solusi seperti pip --certtidak membantu, tetapi paket berikut tidak:

pip install pip_system_certs

Lihat: https://pypi.org/project/pip-system-certs/

Paket ini menambal pip dan meminta pada saat runtime untuk menggunakan sertifikat dari penyimpanan sistem default (daripada sertifikat yang dibundel ca).

Ini akan memungkinkan pip untuk memverifikasi koneksi tls / ssl ke server yang dapat dipercaya oleh instalasi sistem Anda.

sopan santun
sumber
1
tampaknya perlu menginstal pip_sysem_certs untuk membatalkan kesalahan [SSL: CERTIFICATE_VERIFY_FAILED], masalahnya adalah, mencoba menginstalnya mendapat kesalahan [SSL: CERTIFICATE_VERIFY_FAILED] ...
athos
Ini mungkin merupakan solusi di beberapa titik waktu, tetapi pip_system_certsbenar-benar merusak lingkungan Python saya, dan untuk alasan ini ini bukan jawaban yang baik. Jangan pasang pip_system_certs. Lihat stackoverflow.com/questions/27835619/… untuk informasi lebih lanjut.
h0r53
1

bagi saya ini karena sebelumnya saya sedang menjalankan skrip yang mengatur proxy (ke fiddler), membuka kembali konsol atau reboot memperbaiki masalah.

uingtea
sumber
Fiddler dapat di-bypass dengan mengatur "Decrypt HTTPS traffic" menjadi "... from browser only" di Tools | Options. Ini memperbaiki masalah bagi saya.
tephyr
1

Baru-baru ini saya menghadapi masalah yang sama dalam python 3.6 dengan visual studio 2015. Setelah menghabiskan 2 hari, saya mendapatkan solusi dan itu berfungsi dengan baik untuk saya.

Saya mendapatkan kesalahan di bawah ketika mencoba menginstal numpy menggunakan pip atau dari studio visual Mengumpulkan numpy Tidak dapat mengambil URL https://pypi.python.org/simple/numpy/ : Ada masalah saat mengonfirmasi sertifikat ssl: [SSL: CERTIFICATE_VERIFY_FAILED] verifikasi sertifikat gagal (_ssl.c: 748) - melompati Tidak dapat menemukan versi yang memenuhi persyaratan numpy (dari versi:) Tidak ditemukan distribusi yang cocok untuk numpy

Resolusi:

Untuk OS Windows

  1. buka -> "% appdata%" Buat "pip" folder jika tidak ada.
  2. Dalam folder pip buat file "pip.ini".
  3. Edit file dan tulis
    [global]
    dipercaya-host = pypi.python.org Simpan dan Tutup file tersebut. Sekarang instal menggunakan pip / visual studio berfungsi dengan baik.
Ankit Raval
sumber
1

Dalam kasus saya, saya menjalankan Python dalam gambar docker alpine minimal. Itu tidak memiliki sertifikat CA root. Memperbaiki:

apk update && apk add ca-certificates

Martin Melka
sumber
1

Jawaban Vaulstein membantu saya.

Saya tidak menemukan file pip.ini di mana pun di pc saya. Begitu juga yang berikut.

  1. Pergi ke folder AppData. Anda bisa mendapatkan folder appdata dengan membuka command prompt dan mengetik echo% AppData%

Lokasi AppData menggunakan command prompt

Atau cukup ketik% AppData% di windows explorer.

Lokasi AppData di windows explorer

  1. Buat folder bernama pip di dalam folder appdata itu.

  2. Di folder pip yang baru saja Anda buat, buat file teks sederhana bernama pip.ini

  3. Lewati pengaturan konfigurasi berikut dalam file itu menggunakan editor sederhana pilihan Anda.

file pip.ini:

[list]
format=columns

[global]
trusted-host = pypi.python.org pypi.org

Anda sekarang harus baik untuk pergi.

VivekDev
sumber
1

Saya menghadapi masalah serupa. Solusi yang bekerja untuk saya 1) uninstall python 2.7 2) hapus folder python27 3) instal ulang python terbaru

Satyam Raikar
sumber
0

Bagi saya tidak ada metode yang disarankan bekerja - menggunakan cert, HTTP, host-terpercaya.

Dalam kasus saya, beralih ke versi berbeda dari paket bekerja (paho-mqtt 1.3.1 bukannya paho-mqtt 1.3.0 dalam contoh ini).

Sepertinya masalah khusus untuk versi paket itu.

MiN
sumber
0

Anda mungkin memiliki masalah ini jika beberapa sertifikat hilang di sistem Anda

Sancelot
sumber