Я пытаюсь загрузить файл Python в PyPi через twine upload <file>
, но получаю ошибку SSL:
C:\pypubsub>twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl
Uploading distributions to https://upload.pypi.org/legacy/
Uploading PyPubSub-4.0.0rc1-py3-none-any.whl
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
Другие сценарии Python, использующие SSL, имеют ту же проблему, например
- с
python setup.py bdist_wheel upload <my_package>
- с
pip install <any_package>
; но там я могу добавить--trusted-host pypi.python.org
к любойpip install
команде и установка и загрузка зависимостей пройдет успешно
Это происходит на моем корпоративном ноутбуке дома или на работе, но не на моем личном ноутбуке.
Чтобы обойти это, я в основном пытался SO ответить на аналогичную проблему ( т.е. экспортировать сертификат, который шпагат пытается проверить — предположительно, сертификат pypi.python.org — и затем указать шпагату использовать его):
- из Chrome я перешел на https://pypi.pythong.org, щелкнул замок рядом с URL-адресом, затем «Подробности», «Просмотр сертификата», «Подробности», «Копировать в файл». Это сгенерировало файл .CER.
- Я использовал SSL Converter для преобразования файла .CER из формата DER в формат PEM. Это создало файл .CRT.
- Я бегал по шпагату как
twine upload <my_package> --cert <path to CRT file>
; на этот раз ошибка SSL былаSSLError: [SSL] PEM lib (_ssl.c:2846)
.
Затем я попытался отказаться от проверки сертификата сервера, исправив c:\Python35\lib\ssl.py
, как описано в Отказ: я заменил строку _create_default_https_context = create_default_context
на _create_default_https_context = _create_unverified_context
. Повторный запуск команды twine
снова завершился неудачей с исходной ошибкой CERTIFICATE_VERIFY_FAILED.
Я не очень хорошо знаком с сертификатами, поэтому теперь я в недоумении, что еще попробовать.