更新Python googlemaps包后出现异常TransportError求助
解决Python 2.7 googlemaps包的TransportError证书问题
嘿,我之前碰到过一模一样的证书加载坑——哪怕回退了包版本也没用,这大概率不是包本身的问题,而是系统SSL证书路径配置出错或者依赖的证书管理包出问题了。给你几个具体的排查和解决步骤:
1. 手动指定CA证书路径
googlemaps依赖requests库,而requests默认用certifi提供的CA证书。如果系统找不到这个证书文件,就会抛出这个错误。你可以先找到系统里的合法CA证书文件:
- Linux通常在
/etc/ssl/certs/ca-certificates.crt - Windows可以找Python安装目录下
Lib/site-packages/certifi/cacert.pem - 也可以用certifi包直接获取路径:
import certifi print(certifi.where())
然后在代码开头添加环境变量指定这个路径:
import os os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/your/certificate/file' # 替换成你刚才拿到的路径 import googlemaps gmaps = googlemaps.Client(key="my_key_here") reverse_result = gmaps.reverse_geocode((lat,lon)) for result in reverse_result: print(result["types"], result["formatted_address"])
2. 修复certifi依赖包
Python2.7的certifi已经停止更新了,最后一个支持版本是2020.12.5。如果你的certifi版本不对或者损坏,重新安装它:
pip install --upgrade certifi==2020.12.5
安装完成后再用上面的方法确认证书路径,确保requests能找到它。
3. 重置系统证书(针对Linux)
如果是Linux系统,可能系统级的CA证书包损坏了,重新安装它:
# Debian/Ubuntu系列 sudo apt-get update && sudo apt-get install --reinstall ca-certificates # CentOS/RHEL系列 sudo yum reinstall ca-certificates
安装完成后更新证书缓存:
sudo update-ca-certificates
4. 临时跳过证书验证(仅限测试环境)
如果你只是测试代码,不想纠结证书问题,可以手动创建一个跳过SSL验证的requests会话传给googlemaps客户端——注意:生产环境绝对不要这么做,会有安全风险:
import googlemaps import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.poolmanager import PoolManager import ssl # 自定义适配器,跳过证书验证 class SSLAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block, ssl_version=ssl.PROTOCOL_TLSv1_2) # 创建会话并挂载适配器 session = requests.Session() session.mount('https://', SSLAdapter()) # 用这个会话初始化googlemaps客户端 gmaps = googlemaps.Client(key="my_key_here", session=session) reverse_result = gmaps.reverse_geocode((lat,lon)) for result in reverse_result: print(result["types"], result["formatted_address"])
最后提醒
Python2.7已经停止维护快4年了,包括googlemaps在内的很多主流包都不再支持它,后续还会碰到更多兼容性问题。如果可能的话,建议尽快升级到Python3.8+版本,从根源上避免这类问题。
内容的提问来源于stack exchange,提问作者sato
相关产品推荐
相关产品推荐

