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

更新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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:27:51