17

Попытка выяснить, есть ли способ, которым я могу избежать использования флага --cert для pip, когда я устанавливаю пакеты на работе. Существует некоторая проблема с прокси, которая позволяет мне загружать пакеты, которые мне нужны, только когда я предоставляю этот флаг, несмотря на добавление файла 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), версия 1.4.1.

3 ответа3

8

Вы можете установить это с помощью файла конфигурации pip, который находится в $HOME/.pip/pip.conf или %APPDATA%\pip\pip.ini для Windows:

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

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

4

Для меня ни один из обходных путей файла конфигурации не работал. Я использую пип 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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я уже опубликовал этот ответ в SO (тот же ответ, что и в «в конечном итоге дублированная ссылка выше», но в начале я не нашел другой (в конечном итоге дублированный ответ)... так что если кто-то, как я, попадет сюда первым, тогда это может помочь.

Может быть, я нарушаю какие-то правила, чтобы публиковать один и тот же ответ дважды, один в SO, а другой в суперпользователе. Если так, извините за это.

1

Это сработало для меня без необходимости знать, где находится файл конфигурации:

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

Я считаю, что вам нужна версия 10+, которую вы можете найти с помощью:

 python -m pip --version

Вывод команды config set затем выводит имя файла конфигурации для вашего удобства

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .