使用Python pvlib库获取气象数据时报SSL证书错误如何解决?
故障原因
该SSL证书验证错误是pvlib的预报模块向UCAR THREDDS服务器发起HTTPS请求时,本地Python环境的根证书列表无法匹配服务器最新SSL证书导致的,初期可用后续报错通常为服务器证书更新、本地certifi根证书包过期、Python环境缺失根证书配置三种原因。
修复方案
方案1:升级根证书包(首选,无安全风险)
先更新Python根证书管理包certifi:pip install --upgrade certifi
如果你使用macOS环境下Python官网发布的安装包,还需要运行Python自带的证书安装脚本完成配置,将对应命令中的3.x替换为你实际使用的Python版本号即可:/Applications/Python\ 3.x/Install\ Certificates.command方案2:传入自定义SSL上下文(兼容场景广)
如果升级证书后仍报错,可在初始化预报模型时传入自定义SSL上下文,测试场景下可临时关闭证书验证,生产环境建议替换为对应服务器的可信证书路径:
import ssl from pvlib.forecast import GFS, HRRR_ESRL, NAM, NDFD, HRRR, RAP # 测试用:关闭SSL验证的上下文 ssl_ctx = ssl.create_default_context() ssl_ctx.check_hostname = False ssl_ctx.verify_mode = ssl.CERT_NONE fm = GFS(ssl_context=ssl_ctx) data = fm.get_data(latitude, longitude, start, end)
- 方案3:全局临时关闭SSL验证(应急用,不推荐长期使用)
import requests # 关闭SSL验证告警 requests.packages.urllib3.disable_warnings() from pvlib.forecast import GFS, HRRR_ESRL, NAM, NDFD, HRRR, RAP fm = GFS() data = fm.get_data(latitude, longitude, start, end, verify=False)
内容的提问来源于stack exchange,提问作者bchoi
相关产品推荐
相关产品推荐

