Python urllib.urlopen给出[SSL:CERTIFICATE_VERIFY_FAILED]错误

时间:2017-02-05 02:41:37

标签: python python-2.7 ssl

我对Python比较陌生。尝试在Python中编写一个函数,使用Google Distance Matrix API计算位置之间的距离。我实际上在过去已成功使用此代码,但现在我收到以下错误,无法弄清楚发生了什么。

IOError:[Errno套接字错误] [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590)

我知道问题不在于网址,因为我可以在浏览器中输入,使用我的API密钥,它会为我提供我正在寻找的结果(即Google Maps Distance Matrix API的距离信息) 。这似乎与urllib.urlopen函数调用有关。我假设我以某种方式错误地调用它,但我无法弄清楚如何。有什么想法吗?

我使用的是Python 2.7.10版。

import urllib
import re

def getMiles(origin,destination):
    #APIkey = "someAPIkey"  #Update to prompt user for API key
    query = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=" + origin + "&destinations=" + destination + "&key=" + APIkey
    test = 0

fhand = urllib.urlopen(query)  #CODE ERRORS OUT HERE
#Error handling to ensure query works
try:
    for line in fhand:
        line = str(line.strip())
        #print line
        if test == 1:
            line = line.replace('"text" : "',"")
            line = line.replace('",',"")
            result = [origin,'"'+destination+'"'] + line.split()
            break
        if line.startswith('"distance"'):
            test = 1
    return result
except:
    result = [origin,'"'+destination+'"',"ERROR","Query could not be opened"]
    return result

1 个答案:

答案 0 :(得分:0)

这是对我有用的解决方案,在您的程序中添加以下代码,它可以修复您的错误,配合。

import ssl
ssl._create_default_https_context = ssl._create_unverified_context