MacOS High OSierra 10.13.6, Python3.7, GeocoderServiceError: [SSL: CERTIFICATE_VERIFY_FAILED] - PullRequest
0 голосов
/ 05 сентября 2018

Я недавно установил python 3.7 на macOS High OSierra и целую вечность пытался заставить его работать. Этот вопрос здесь . В настоящее время у меня проблемы с приведенным ниже кодом, и я хотел бы знать, если кто-нибудь может помочь.

import geopy
geocoder = geopy.geocoders.GoogleV3(domain = "maps.google.co.uk")
geocoder.geocode("Cambridge", exactly_one = False)

Приводит к следующей ошибке:

SSLCertVerificationError Traceback (последний вызов был последним) /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py в do_open (self, http_class, req, ** http_conn_args) 1316
h.request (req.get_method (), req.selector, req.data, заголовки, -> 1317 encode_chunked = req.has_header ('Transfer-encoding')) 1318
за исключением ошибки OSError: # ошибка тайм-аута

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py в запросе (self, method, url, body, headers, encode_chunked) 1228
"" "Отправить полный запрос на сервер." "" -> 1229 self._send_request (метод, URL, тело, заголовки, encode_chunked) 1230

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py в _send_request (self, метод, URL, тело, заголовки, encode_chunked)
1274 body = _encode (body, 'body') -> 1275 self.endheaders (body, encode_chunked = encode_chunked) 1276

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py в конечных заголовках (self, message_body, encode_chunked) 1223
поднять CannotSendHeader () -> 1224 self._send_output (message_body, encode_chunked = encode_chunked) 1225

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py в _send_output (self, message_body, encode_chunked) 1015
del self._buffer [:] -> 1016 self.send (msg) 1017

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py в отправке (self, data) 955 если self.auto_open: -> 956 self.connect () 957 остальное:

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / HTTP / client.py in connect (self) 1391 self.sock = self._context.wrap_socket (self.sock, -> 1392 имя_сервера = имя_сервера) 1393

/ Library / Каркасы / Python.framework / Версии / 3,7 / Библиотека / python3.7 / ssl.py в wrap_socket (self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, имя_хоста сервера, сеанс) 411 контекст = я, -> 412 сессия = сессия 413)

/ Library / Каркасы / Python.framework / Версии / 3,7 / Библиотека / python3.7 / ssl.py в _create (cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session) 849 повысить ValueError ("do_handshake_on_connect не должен быть указан для неблокирующие розетки ") -> 850 self.do_handshake () 851 кроме (OSError, ValueError):

/ Library / Каркасы / Python.framework / Версии / 3,7 / Библиотека / python3.7 / ssl.py в do_handshake (self, block) 1107
не self.settimeout (None) -> 1108 self._sslobj.do_handshake () 1109 наконец:

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: самозаверяющий сертификат в сертификате цепь (_ssl.c: 1045)

Во время обработки вышеуказанного исключения произошло другое исключение:

URLError Traceback (последний вызов был последним) /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/geopy/geocoders/base.py в _call_geocoder (self, url, timeout, raw, requestter, deserializer, ** kwargs)314 попыток: -> 315 страниц = запросчик (req, timeout = timeout, ** kwargs) 316 кроме Исключения как ошибки:

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / URLLIB / request.py в открытом состоянии (self, fullurl, data, timeout) 524 -> 525 ответ = self._open (запрос, данные) 526

/ Library / Каркасы / Python.framework / Версии / 3.7 / Библиотека / python3.7 / URLLIB / request.py в _open (self, req, data) 542 результат = self._call_chain (self.handle_open, протокол, протокол + -> 543 '_open', req) 544 если результат:

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / URLLIB / request.py в _call_chain (self, chain, kind, meth_name, * args) 502 func = getattr (обработчик, имя_мета) -> 503 результат = func (* args) 504, если результат не None:

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / URLLIB / request.py в https_open (self, req) 1359 возвращение self.do_open (http.client.HTTPSConnection, req, -> 1360 context = self._context, check_hostname = self._check_hostname) 1361

/ Library / Frameworks / Python.framework / Версии / 3,7 / Библиотека / python3.7 / URLLIB / request.py в do_open (self, http_class, req, ** http_conn_args) 1318
кроме OSError как err: # timeout error -> 1319 повысить URLError (ошибка) 1320 r = h.getresponse ()

URLError:

Во время обработки вышеуказанного исключения произошло другое исключение:

GeocoderServiceError Traceback (последний вызов был последним) в () ----> 1 geocoder.geocode («Кембридж», точный-один = ложный)

/ Library / Каркасы / Python.framework / Версии / 3,7 / Библиотека / python3.7 / сайт-пакеты / geopy / geocoders / googlev3.py в геокоде (сам, запрос, точный-один, время ожидания, границы, регион, компоненты, язык, сенсор) 240 logger.debug ("% s.geocode:% s", self. class . name , url) 241 вернуть self._parse_json ( -> 242 self._call_geocoder (url, timeout = timeout), точный_он 243) 244

/ Library / Каркасы / Python.framework / Версии / 3,7 / Библиотека / python3.7 / сайт-пакеты / geopy / geocoders / base.py в _call_geocoder (self, url, timeout, raw, requestter, deserializer, ** kwargs) 340, если "истекло время ожидания" в сообщении: 341 повышение GeocoderTimedOut («истекло время ожидания») -> 342 повысить GeocoderServiceError (сообщение) 343 344 if hasattr (page, 'getcode'):

GeocoderServiceError: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: самозаверяющий сертификат в цепочке сертификатов (_Ssl.c: 1045)

1 Ответ

0 голосов
/ 27 марта 2019

Взгляните на следующую ссылку: здесь

Я смог заставить его работать, выполнив вторую команду на этой странице:

open /Applications/Python\ 3.7/Install\ Certificates.command

...