You need to enable JavaScript to run this app. Python接入Google Calendar API时报SCOPES未定义的NameError求助
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 12:24:03