You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

geopy.geocoders报SSL: CERTIFICATE_VERIFY_FAILED错误,如何解决?

解决Nominatim SSL证书验证失败问题

这个错误的核心原因是公司网络环境的SSL证书信任链不完整——公司大概率使用了代理服务器或内部根证书,导致Python环境无法验证Nominatim服务器的合法SSL证书。以下是几种可行的解决办法:

方案1:临时禁用SSL证书验证(应急用,不推荐长期使用)

通过修改SSL上下文跳过证书验证,快速解决问题:

from geopy.geocoders import Nominatim
import ssl

# 创建不验证证书的SSL上下文
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

geolocator = Nominatim(user_agent="ryan_data", ssl_context=ctx)
location = geolocator.geocode("175 5th Avenue NYC")
print(location.address)

或者用更简洁的全局修改方式:

from geopy.geocoders import Nominatim
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
geolocator = Nominatim(user_agent="ryan_data")
location = geolocator.geocode("175 5th Avenue NYC")
print(location.address)

方案2:导入公司内部根证书(安全合规,推荐)

联系公司IT部门获取内部根证书文件(通常为.pem或.crt格式),在代码中指定信任该证书:

from geopy.geocoders import Nominatim
import ssl

# 加载公司根证书
ctx = ssl.create_default_context(cafile="/path/to/company-root-cert.pem")
geolocator = Nominatim(user_agent="ryan_data", ssl_context=ctx)
location = geolocator.geocode("175 5th Avenue NYC")
print(location.address)

也可以将公司根证书添加到Python默认信任库(路径可通过ssl.get_default_verify_paths()查询),无需每次修改代码。

方案3:配置公司代理(如果网络需通过代理访问外部)

若公司要求通过代理访问外网,初始化Nominatim时添加代理参数:

from geopy.geocoders import Nominatim

proxies = {
    "http": "http://your-company-proxy:port",
    "https": "https://your-company-proxy:port"
}
# 代理需认证的格式:http://username:password@your-company-proxy:port
geolocator = Nominatim(user_agent="ryan_data", proxies=proxies)
location = geolocator.geocode("175 5th Avenue NYC")
print(location.address)

内容的提问来源于stack exchange,提问作者ASH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:30:46