Bisakah saya berkeliling menggunakan "pip install --cert"?

21

Mencoba mencari tahu apakah ada cara yang bisa saya hindari menggunakan flag --cert ke pip ketika saya menginstal paket di tempat kerja. Ada beberapa masalah dengan proxy yang hanya memungkinkan saya untuk mengunduh paket yang saya butuhkan ketika saya memberikan flag itu, meskipun menambahkan mycert.crtfile ke /usr/local/share/ca-certificatesdan berjalan sudo update-ca-certificates.

Contoh dari pesan yang saya lihat adalah:

$ pip install "virtualenv>=1.10.1"
Downloading/unpacking virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/ when looking for download links for virtualenv>=1.10.1
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not find any downloads that satisfy the requirement virtualenv>=1.10.1
Cleaning up...
No distributions at all found for virtualenv>=1.10.1
Storing complete log in /tmp/tmpwW5qXD

Ini dapat diselesaikan dengan menggunakan:

pip install --cert=/usr/local/share/ca-certificates/mycert.crt

Namun, saya lebih suka tidak harus melakukannya (karena saya yakin aplikasi lain menabrak masalah ini).

Saya menjalankan Linux Mint 15 (meskipun saya sebelumnya memiliki masalah yang sangat mirip pada Ubuntu 12.04), pip versi 1.4.1.

Ian Lee
sumber
Ini bisa menjadi duplikat potensial dari stackoverflow.com/questions/19377045/… .. Saya tidak yakin apa kebijakan ini untuk menggabungkan dll.
Ryan

Jawaban:

9

Anda dapat mengaturnya melalui file konfigurasi pip, yang ada di dalam $HOME/.pip/pip.confatau %APPDATA%\pip\pip.inidi Windows:

[global]
cert = /usr/local/share/ca-certificate/mycert.crt

File ini memungkinkan Anda untuk mengatur pada dasarnya semua flag yang digunakan oleh pip. Dokumentasi lengkap ada di https://pip.pypa.io/en/latest/user_guide/#configuration

Ryan
sumber
2
Saya pikir komentar Anda pada posting asli saya mengarah ke jawaban nyata, yaitu bahwa pip tidak menggunakan sertifikat sistem. Ini adalah solusi yang baik, meskipun mengalami masalah ketika saya beralih antara lingkungan kerja dan rumah (melalui VPN). Lebih banyak masalah dengan sertifikat daripada solusi sekalipun.
Ian Lee
1
Tautan yang diperbarui ke konfigurasi: pip.pypa.io/en/latest/user_guide.html#configuration
sequoia
5

Bagi saya, tidak ada penyelesaian file konfigurasi yang berfungsi. Saya menggunakan pip 1.5.4 di Ubuntu 14.04

Apa yang akhirnya berhasil bagi saya adalah menginstal sertifikat pada sistem terlebih dahulu (bagi saya di ubuntu ini akan menjadi)

sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Yang sebelumnya secara otomatis memperbarui file bundel (memeriksa di bagian bawah /etc/ssl/certs/ca-certificates.crtAnda sekarang akan melihat sertifikat yang sama seperti pada my_cert.crt)

Sekarang gunakan jalur itu di PIP_CERT. Dan tambahkan ke saya .bashrc:

echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc

PENOLAKAN : Saya sudah memposting jawaban ini dalam SO (jawaban yang sama seperti pada 'akhirnya tautan duplikat di atas', tetapi pada awalnya saya tidak menemukan yang lain (jawaban akhirnya digandakan) ... jadi jika seseorang seperti saya tiba di sini dulu, maka ini mungkin bisa membantu.

Mungkin saya melanggar beberapa jenis aturan untuk mengirim jawaban yang sama dua kali, satu di SO dan yang lain di superuser. Kalau begitu, maaf soal itu.

andzep
sumber
2

Ini berfungsi untuk saya tanpa perlu tahu di mana file config tinggal:

python -m pip config set global.cert C:\\Path\\cert.crt

Saya percaya Anda membutuhkan pip versi 10+, yang dapat Anda temukan dengan:

 python -m pip --version

Output dari perintah set konfigurasi kemudian menampilkan nama file konfigurasi untuk kenyamanan Anda

avatarofhope2
sumber