Чи можу я обійтись за допомогою "pip install --cert"?


21

Намагаюся зрозуміти, чи є спосіб, який я можу уникнути використання прапорця --cert для піпінгу, коли я встановлюю пакети на роботі. Існує певна проблема з проксі-сервером, яка дозволяє мені завантажувати потрібні мені пакунки, коли я надаю цей прапор, незважаючи на додавання mycert.crtфайлу /usr/local/share/ca-certificatesта запуск sudo update-ca-certificates.

Приклад повідомлень, які я бачу:

$ 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

Це можна вирішити за допомогою використання:

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

Однак я вважаю за краще не робити цього (оскільки я впевнений, що інші програми стикаються з цим питанням).

У мене працює Linux Mint 15 (хоча раніше у Ubuntu 12.04 були дуже схожі проблеми), pip версія 1.4.1.


Це може бути потенційним дублікатом цього stackoverflow.com/questions/19377045/… .. Я не впевнений, що таке політика щодо об'єднання тощо.
Райан

Відповіді:


9

Ви можете встановити це через файл конфігурації pip, який знаходиться у Windows $HOME/.pip/pip.confабо %APPDATA%\pip\pip.ini:

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

Цей файл дозволяє вам встановлювати в основному всі прапори, які використовуються в pip. Повна документація знаходиться на веб-сторінці https://pip.pypa.io/en/latest/user_guide/#configuration


2
Я думаю, що ваш коментар до мого оригінального допису призводить до реальної відповіді, яка полягає в тому, що піп не використовує системних сертифікатів. Це хороше рішення, хоча воно переживає проблеми, коли я перемикаюся між робочим та домашнім середовищем (через VPN). Більше проблеми з cert, ніж рішення.
Ян Лі

1
Оновлено посилання на конфігурацію: pip.pypa.io/en/latest/user_guide.html#configuration
секвойя

5

Для мене не працювало не з обхідних файлів конфігураційного файлу. Я використовую pip 1.5.4 на Ubuntu 14.04

Що зрештою для мене спрацювало, це спочатку встановити сертифікат у систему (для мене на ubuntu це було б)

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

Попередній автоматично оновлює файл пакета (перевіряючи внизу, /etc/ssl/certs/ca-certificates.crtви повинні побачити той самий сертифікат, що і в my_cert.crt)

Тепер використовуйте цей шлях у PIP_CERT. І додайте його до мого .bashrc:

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

ВІДПОВІДАЛЬНІСТЬ : Я вже опублікував цю відповідь в ТАК (така ж відповідь, як у "зрештою, дублюється посилання вище", але на початку я не знайшов іншого (зрештою, дублюється відповідь) ... тож якщо хтось, як я, потрапляє сюди першим, то це може допомогти.

Можливо, я порушую якісь правила, щоб розміщувати одну і ту ж відповідь двічі, один в ТА, а інший у суперрусера. Якщо так, пробачте про це.


2

Це працювало для мене, не знаючи, де живе конфігураційний файл:

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

Я вважаю, що вам потрібна піп-версія 10+, яку ви можете знайти:

 python -m pip --version

Вихід команди config config потім виводить ім'я файлу config для вашої зручності

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.