Python接入Google Calendar API时报SCOPES未定义的NameError求助
报错根因
这个NameError的触发逻辑没有任何歧义:
auth_handler.py第21行调用了SCOPES变量,但整个文件的所有作用域里,都没有提前定义过这个值。你之前程序能正常跑通,是旧版本代码里写过这个常量,大概率是某次编辑、代码自动格式化的时候,误把原来的定义行删掉了。SCOPES是Google OAuth授权流程的必填参数,用来声明你的桌面应用要申请的Calendar API访问权限范围,缺了这个参数,授权流根本没法初始化。
可直接照着做的修复步骤
- 打开auth_handler.py,在导入语句块的下方、
eel.init('web')这行的前面,补上SCOPES的全局定义:# 声明应用申请的Google Calendar访问权限 # 仅读取日历事件的场景用下面的配置就够 # 如果后续需要创建、修改日历事件,把readonly去掉即可 SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'] - 补完代码直接运行程序就行。本地已经存的
token.pickle是之前用相同权限生成的,不需要重新唤起浏览器走授权流程,程序会直接校验已有令牌的有效性,正常读取日历数据。 - 只有当你后续修改了SCOPES的权限范围(比如从只读改成可写)的时候,才需要删除旧的
token.pickle文件,重新走一次授权获取匹配新权限的令牌。
避坑提醒
- 别把SCOPES定义写在
authenticate_google函数里面,放全局作用域方便其他模块复用,减少重复写常量的麻烦。 - 这个问题属于代码编写遗漏,不是依赖损坏、环境版本不兼容的问题,完全不需要重装Python、重装谷歌相关的依赖包。
内容的提问来源于stack exchange,提问作者Ara Fasaka
相关产品推荐
相关产品推荐

