2017-02-07 3 views
27

Многие операции на python требуют доступа к вещам через https. Это включает в себя настройку pip или просто использование http.client.HTTPSConnection или любых модулей или приложений, которые используют эти вещи внутренне.Mac OSX python ssl.SSLError: проверка сертификата SSL: CERTIFICATE_VERIFY_FAILED] (_ssl.c: 749)

Если python был установлен из официального установщика python pkg, загруженного с https://python.org, тогда он использует внутреннюю версию openssl и не содержит корневых сертификатов. Все, что использует результаты соединения SSL в этой ошибке:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) 

Как я могу установить корневые сертификаты, чтобы сделать выше ошибку уйти?

ответ

66

Когда вы запускаете установщик python, они отображают эту информацию для вас. Он также задокументирован в /Applications/Python 3.6/ReadMe.rtf, но его очень легко упустить.

Просто найдите Applications/Python 3.6 и дважды щелкните Install Certificates.command

Существует проблема в Python багтрекер об этом. http://bugs.python.org/issue29480

+0

Есть ли решение, если один не имеет корень доступ? Благодарю. –

+0

Пробовал и работал как шарм! Большое спасибо! –

+0

Я запустил файл Install Certificates.command, но ошибка сохраняется (в Py36), если я использую URL-адрес https в своем коде (для чтения содержимого). Если я использую одну и ту же строку URL минус «s» (например, http), мой код работает. К сожалению, мне нужно https для некоторых URL-адресов. Любое предложение для этого? (Я также запускал «pip3 install --upgrade certifi», потому что мне нужны оба Py27 и Py36) – ultrageek

2

Дешевый способ вокруг этого - просто использовать python3.5, если вы все еще имеете его.

Нажатие на PyPI:

python3.5 setup.py register -r pypitest

python3.5 setup.py sdist upload -r pypitest

проклевыванием, кажется, работает хорошо с 3,6 из коробки ..