Как указать параметры pip в PyCharm для установки из файла require.txt

1

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

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

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

Повторить попытку (повторить попытку (итого = 4, connect = None, read = None, redirect = None, status = None)) после того, как соединение сломано с помощью команды SSLError (SSEYrror (1, '[SSL: CERTIFICATE_VERIFY_FAILED]) (_ssl.c: 833) '),)': /simple/robotframework/

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

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

  • 0
    Нет способа сделать это на данный момент, не стесняйтесь подать проблему здесь
Теги:
pip
pycharm

1 ответ

2
Лучший ответ

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

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Файл pip 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 -import -alias key-alias -file "C:\path\to\exported\key.der" -keystore "C:\Path\to\keystore\.PyCharm2018.3\system\tasks\cacerts" например 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: нераспознанный формат хранилища ключей: ноль. Оказывается, вы можете просто скопировать сертификат простого текста, экспортированный на шаге 2, прямо в хранилище ключей.

Вам не нужно включать какую-либо информацию заголовка, просто от -----BEGIN CERTIFICATE----- до -----END CERTIFICATE-----. Однако в будущем может оказаться полезным, если кто-то (вы) снова захочет просмотреть это хранилище ключей, поэтому вы можете скопировать его с вкладки "Общие", упомянутой выше.

  • 0
    Спасибо. Это сработало как (ру) очарование! Однако мне не понадобился шаг 3: я экспортировал корпоративный CA как PEM, а затем просто использовал текстовый редактор, чтобы добавить его в cacert.pem, расположенный на шаге 1.
  • 1
    Одно наблюдение: обновление пункта сбрасывает cacert.pem. Таким образом, после обновления pip необходимо вернуть корпоративный сертификат CA в cacert.pem.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню