Как указать параметры pip в PyCharm для установки из файла require.txt - PullRequest
0 голосов
/ 27 августа 2018

Чтобы установить пакеты Python из-за корпоративного прокси-сервера, иногда необходимо добавить опции к pip, например --proxy или --cert.

Как объясняется указание прокси в PyCharmв этот вопрос и как добавить любую опцию к вызову pip объясняется в этот ответ .

Последнее позволило бы мнедобавить обязательную опцию --cert.К сожалению, это работает только при ручной установке пакета и не охватывает случай, когда у меня есть файл requirements.txt и я хочу, чтобы PyCharm автоматически установил перечисленные пакеты.Это приводит к этой ошибке:

Повторная попытка (повторная попытка (всего = 4, подключение = Нет, чтение = Нет, перенаправление = Нет, состояние = Нет)) после разрыва соединения с помощью 'SSLError (SSLError (1, '[SSL: CERTIFICATE_VERIFY_FAILED] сертификат не прошел проверку (_ssl.c: 833)'),) ': / simple / robotframework /

Это означает, что мне нужно что-то добавить в базовый pip call (--cert в моем случае).

Вопрос: Как мне указать pip параметров, которые будут использоваться PyCharm для автоматической установки пакетов, указанных в requirements.txt

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете загрузить сертификат CA, вставленный корпоративным брандмауэром, и установить его в хранилище ключей pip. Ниже описан процесс, который я использовал, но я уверен, что те, кто более опытен в форматах / манипулировании сертификатами, могут улучшить его:

ОБРАТИТЕ ВНИМАНИЕ: файл pace cacerts.pem будет перезаписываться всякий раз, когда pip обновлен, поэтому сертификат компании необходимо будет повторно вставить.

Шаг 1 . Определите правильный склад ключей. Если вы используете виртуальную среду, местоположение хранилища ключей, используемого pip при его активации, должно быть C:\PATH\TO\VENV\Lib\site-packages\pip\_vendor\certifi\cacert.pem

ПРИМЕЧАНИЕ. В отличие от большинства хранилищ ключей, с которыми я имел дело (в основном при попытке заставить продукты JetBrains работать за брандмауэрами корпорации), это простой текст. Подробнее об этом на шаге 3 .

Шаг 2 . Загрузите сертификат. Используя Firefox (есть много способов сделать это), перейдите по URL-адресу, который предшествует ошибке (что-то вроде https://pypi.org/simple/, или https://pypi.python.org/simple/). Нажмите на «Блокировка»> «Показать сведения о соединении»> «Дополнительная информация». На странице В информационном окне выберите Просмотр сертификата> Вкладка «Сведения». Экспортируйте сертификат верхнего уровня как .crt / .pem. Вернитесь на вкладку «Общие», это может потребоваться на шаге 3.

Шаг 3 . Обычно вы можете просто использовать команду keytool, например keytool -import -alias key-alias -file "C:\path\to\exported\key.der" -keystore "C:\Path\to\keystore\.PyCharm2018.3\system\tasks\cacerts", но при этом вы получите следующую ошибку keytool: java.security.KeyStoreException: нераспознанный формат хранилища ключей: null . Оказывается, вы можете просто скопировать сертификат открытого текста, экспортированный на шаге 2, прямо в хранилище ключей.

Вам не нужно включать какую-либо информацию заголовка, просто от ----- НАЧАТЬ СЕРТИФИКАТ ----- до ----- КОНЕЦ СЕРТИФИКАТА -----. Однако в будущем может быть полезно, если кто-то (вы) снова захочет просмотреть это хранилище ключей, поэтому вы можете скопировать его с вкладки «Общие», упомянутой выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...