Python调用ezgmail初始化Gmail API出现UnboundLocalError如何解决
错误根因
该报错是oauth2client库解析损坏/格式不兼容的token凭证文件时,未成功读取到类模块字段,导致module_name变量未赋值就被引用触发的错误,和本地的token文件、依赖包版本匹配度直接相关。
解决方案按优先级尝试:
- 删除旧token文件重试授权
直接删除当前代码运行目录下生成的token.json文件,重新执行代码:
import ezgmail ezgmail.init()
此时会自动拉起浏览器OAuth授权流程,完成授权后新生成的token文件即可正常解析,绝大多数场景该操作即可解决问题。
- 统一安装兼容版本依赖包
如果删除token后仍报错,是因为ezgmail依赖的oauth2client早已停止维护,和新版依赖包存在兼容冲突,执行以下命令重装指定版本的依赖即可:
pip uninstall -y oauth2client google-api-python-client ezgmail pip install ezgmail==0.0.18 google-api-python-client==1.7.11 oauth2client==4.1.3
- 核对credentials文件类型
确认你存放的credentials.json是GCP控制台创建的桌面应用类型的OAuth客户端ID凭证,若创建时选择了Web应用、服务账号等其他类型,也会导致授权后生成的token格式异常。
内容的提问来源于stack exchange,提问作者yavda
相关产品推荐
相关产品推荐

