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

使用Geopy Nominatim时遭遇SSLCertVerificationError问题求助

解决Nominatim地理编码时的SSL证书验证失败问题

在Windows系统的Anaconda环境(Python 3.9.13)中,调用Nominatim的geocode()方法时出现以下错误:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)

这是因为Anaconda自带的SSL证书存储未包含目标服务器的有效证书,或者网络中存在自签名代理证书导致验证失败。以下是几种可行的解决方法:

方法1:指定有效CA证书路径

Anaconda自带了CA证书文件,可在初始化Nominatim时指定该证书路径,让请求使用正确的证书链验证:

from geopy.geocoders import Nominatim
import ssl

# 替换为你的Anaconda安装路径
anaconda_cert_path = r"C:\Users\你的用户名\anaconda3\Library\ssl\cacert.pem"
ssl_ctx = ssl.create_default_context(cafile=anaconda_cert_path)

nom = Nominatim(user_agent="test", ssl_context=ssl_ctx)
nom.geocode("3995 23rd St, San Francisco, CA 94114")

如果已安装certifi库,也可以用它自动获取系统/环境的有效证书路径:

from geopy.geocoders import Nominatim
import ssl
import certifi

ssl_ctx = ssl.create_default_context(cafile=certifi.where())
nom = Nominatim(user_agent="test", ssl_context=ssl_ctx)
nom.geocode("3995 23rd St, San Francisco, CA 94114")

方法2:临时禁用SSL验证(仅测试场景)

如果只是临时测试代码,可临时关闭SSL验证(不推荐生产环境使用,存在安全风险):

from geopy.geocoders import Nominatim
import ssl

ssl_ctx = ssl.create_default_context()
ssl_ctx.check_hostname = False
ssl_ctx.verify_mode = ssl.CERT_NONE

nom = Nominatim(user_agent="test", ssl_context=ssl_ctx)
nom.geocode("3995 23rd St, San Francisco, CA 94114")

方法3:更新Anaconda的CA证书

打开Anaconda Prompt,执行以下命令更新环境中的CA证书,修复证书存储问题:

conda update certifi

更新完成后重新运行代码,验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:15:32