![](/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.