Amazon Linux 2运行Python Discord EC2控制脚本触发KeyError报错求助
报错原因
你遇到的KeyError: 'SuperSecretSquirrelStuff-key'是因为Python尝试从系统环境变量读取名为SuperSecretSquirrelStuff-key的变量时未找到匹配值导致的。你的代码逻辑是先从config配置文件中读取要获取的环境变量名称,再去系统环境变量中取这个名称对应的Discord机器人密钥,现在环境变量中没有配置该值所以触发报错。
解决方法
以下提供3种适配不同场景的解决方法:
方案1:临时配置环境变量(适合测试验证,重启终端后配置会失效)
在运行bot.py的终端中,先执行以下命令再启动脚本即可:export SuperSecretSquirrelStuff-key="替换为你自己的Discord机器人实际Token" python3 bot.py注意等号两侧不要留空格,Token要加引号避免特殊字符解析错误。
方案2:永久配置环境变量(适合长期稳定运行)
编辑当前用户的bash配置文件:vi ~/.bashrc在文件末尾追加一行配置:
export SuperSecretSquirrelStuff-key="替换为你自己的Discord机器人实际Token"保存退出后执行命令让配置立即生效:
source ~/.bashrc后续直接执行
python3 bot.py即可启动,不需要再手动配置变量。方案3:直接修改代码(新手友好,不需要配置环境变量)
把代码最后一行的client.run(os.environ[config.discord_key])直接修改为:client.run("替换为你自己的Discord机器人实际Token")注意:使用该方案不要把带明文密钥的代码分享或上传到公开代码仓库,避免密钥泄露被滥用。
额外注意事项
如果解决环境变量问题后出现AWS权限相关报错,需要给运行脚本的EC2实例绑定有权限操作目标EC2实例启停、查询状态的IAM角色即可。
内容的提问来源于stack exchange,提问作者Georgie
相关产品推荐
相关产品推荐

