python - os.environ[] 从 .env 文件访问变量的 KeyError

标签 python slack-api pathlib python-os

我正在尝试构建一个 slackbot 并从一个单独的 .env 文件中检索 slack token 。当我运行它时,会抛出如下所示的错误:

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"])

.env 文件 (.env) 的代码在这里:

SLACK_TOKEN="xoxb-1691324762768-1693412284260-RdP0ZQUaQxD9j9mtLlwfNMbD"

最佳答案

您应该使用 os.getenv("SLACK_TOKEN") 而不是 os.environ["SLACK_TOKEN"]

来自docs (强调我的):

This mapping is captured the first time the os module is imported, typically during Python startup as part of processing site.py. Changes to the environment made after this time are not reflected in os.environ, except for changes made by modifying os.environ directly.

或者在load_dotenv()中使用override=True

关于python - os.environ[] 从 .env 文件访问变量的 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65854207/

相关文章:

python - Flask 显示 TypeError : send_from_directory() missing 1 required positional argument: 'path'

python - 使用 Pony ORM 进行分页

python - 对没有迁移的应用程序的依赖 : %s"% key[0]) in the Django

slack-api - 发出 api 请求时缺少 slack bot 范围

python - 如何使用 pathlib.Path.expanduser() 并修改和使用 PosixPath 值?

python - 如何用多行编写 python lambda?

php - 使用 PHP 中的 files.upload 将文件上传到 slack

java - slack-api:如何格式化包含url的文本?

python - 返回目录和子目录中的文件总数

Python3 pathlib 单行代码用于检查 Path 是否至少有一个特定扩展名的文件