问题描述
我正在尝试构建一个 slackbot 并从单独的 .env 文件中检索 slack 令牌。当我运行它时,我被抛出一个如下所示的错误:
raise KeyError(key) from None
KeyError: 'SLACK_TOKEN'
机器人的代码 (ShoppingListBot.py) 在这里:
import slack
import os
from pathlib import Path
from dotenv import load_dotenv
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
client = slack.WebClient(token=os.environ["SLACK_TOKEN"])
SLACK_TOKEN="xoxb-1691324762768-1693412284260-RdP0ZQUaQxD9j9mtLlwfNMbD"
解决方法
您应该使用 os.environ["SLACK_TOKEN"]
而不是 os.getenv("SLACK_TOKEN")
。
来自 docs(强调我的):
此映射在第一次导入 os 模块时捕获,通常在 Python 启动期间作为处理 site.py 的一部分进行捕获。在此时间之后对环境所做的更改不会反映在 os.environ 中,除非直接修改 os.environ 所做的更改。
或者在override=True
中使用load_dotenv()
我通常使用 YAML 文件,但根据 pip python-dotenv
,您似乎应该使用os.getenv("SLACK_TOKEN")
而不是 os.environ["SLACK_TOKEN"]