![](/img/trans.png)
[英]Ubuntu ENV Variable not loaded in Jupyter Python os.environ
[英]KeyError with os.environ[] accessing variable from .env file
我正在尝试构建一个 slackbot 并从 separate.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"])
.env 文件 (.env) 的代码在这里:
SLACK_TOKEN="xoxb-1691324762768-1693412284260-RdP0ZQUaQxD9j9mtLlwfNMbD"
而不是os.environ["SLACK_TOKEN"]
你应该使用os.getenv("SLACK_TOKEN")
。
从文档(强调我的):
在第一次导入 os 模块时捕获此映射,通常在 Python 启动期间作为处理 site.py 的一部分。 在此时间之后对环境所做的更改不会反映在 os.environ 中,但直接修改 os.environ 所做的更改除外。
或者在load_dotenv()
中使用override=True
我通常使用 YAML 文件,但根据pip python-dotenv ,您应该使用os.getenv("SLACK_TOKEN")
而不是os.environ["SLACK_TOKEN"]
不确定您是否仍然遇到此问题,但其他任何人都遇到此问题 - 这就是我解决它的方法。 注意:我还在学习
我在同一目录中创建了一个具有正确值的.env
文件,然后将以下内容写入“app.py”
from http import client
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os
from dotenv import load_dotenv
from pathlib import Path
load_dotenv()
#loading from .env file that was made
SLACK_BOT_TOKEN = os.environ['SLACK_BOT_TOKEN']
SLACK_APP_TOKEN = os.environ['SLACK_APP_TOKEN']
app = App(token=SLACK_BOT_TOKEN)
if __name__ == '__main__':
SocketModeHandler(app, os.environ['SLACK_APP_TOKEN']).start()
在运行之前,确保将 go 放入 python 安装文件夹并运行安装证书命令。 必须安装才能成功与服务器通信。
返回此消息并确认 Bolt 应用程序正在运行。
希望这可以帮助!
----- 来源----
我遇到了同样的问题,即使更新了 .env 文件也没有帮助,代码也没有读取新变量,所以我尝试了 cml 并使用 SET NAMEOFVARIABLE = VALUE,它起作用了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.