Я разрабатываю на Python 3.6.1 для Mac для развертывания на Raspberry Pi 3. Я использую imapclient для чтения Gmail. Он работает на Pi, но тот же сценарий на Mac генерирует ошибку [SSL: CERTIFICATE_VERIFY_FAILED] при попытке войти в Gmail:
_______CODE_______
....
from imapclient import IMAPClient
....
while True:
loop()
....
def loop():
server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)
if DEBUG:
print('Logging in as ' + USERNAME)
(etc)
_______OUTPUT_______
Traceback (most recent call last):
File "/Users/username/PycharmProjects/googleVoice_tests/gmail_imap_02.py", line 64, in <module>
loop()
File "/Users/username/PycharmProjects/googleVoice_tests/gmail_imap_02.py", line 27, in loop
server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/imapclient.py", line 254, in __init__
self._imap = self._create_IMAP4()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/imapclient.py", line 289, in _create_IMAP4
self._timeout)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 44, in __init__
imaplib.IMAP4.__init__(self, host, port)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imaplib.py", line 197, in __init__
self.open(host, port)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 50, in open
self.sock = wrap_socket(sock, self.ssl_context, host)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 32, in wrap_socket
return ssl_context.wrap_socket(sock, server_hostname=host)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
_context=self, _session=session)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
Process finished with exit code 1
Я ничего не знаю о SSL и связанных с ним файлах .crt ... Я даже не знаю, с чего начать поиск. Почему это работает на одной машине, а не на другой? Может кто-нибудь сказать мне, что здесь не так и как я могу это исправить?