【发布时间】:2021-02-20 08:06:50
【问题描述】:
我正在尝试制作一个不和谐的机器人,当我尝试使用 load_dotenv() 加载 .env 时它不起作用,因为它说
Traceback (most recent call last):
File "/home/fanjin/Documents/Python Projects/Discord Bot/bot.py", line 15, in <module>
client.run(TOKEN)
File "/home/fanjin/.local/lib/python3.8/site-packages/discord/client.py", line 708, in run
return future.result()
File "/home/fanjin/.local/lib/python3.8/site-packages/discord/client.py", line 687, in runner
await self.start(*args, **kwargs)
File "/home/fanjin/.local/lib/python3.8/site-packages/discord/client.py", line 650, in start
await self.login(*args, bot=bot)
File "/home/fanjin/.local/lib/python3.8/site-packages/discord/client.py", line 499, in login
await self.http.static_login(token.strip(), bot=bot)
AttributeError: 'NoneType' object has no attribute 'strip
这是我的机器人代码:
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
client = discord.Client()
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
client.run(TOKEN)
还有 save.env 文件:(这是一个假令牌)
# .env
DISCORD_TOKEN={Bzc0NjfUH8fEWFjg2NDMyMjY2.X6coqw.JyiOR89JIH7fFFoyOMufK_1A}
两个文件都在同一个目录下,我什至尝试用显式指定 .env 的路径
env_path = Path('path/to/file') / '.env'
load_dotenv(dotenv_path=env_path)
但这也没用
【问题讨论】:
-
如果这主要是关于
dotenv库的问题,它不是 Python 或 Linux 本身的一部分,请考虑为该库添加标签。 -
顺便说一句,这是一个猜测,但是如果您引用令牌的值,它会起作用吗?即:
DISCORD_TOKEN='{...}' -
...包含异常的堆栈跟踪也很有帮助;如果我们知道最初是哪一行引发了异常,我们就会知道哪个值意外地是
None,而不是包含一个字符串。 -
@CharlesDuffy 很抱歉迟到了,我正在使用我通过 pip 安装的
python-dotenv库。我尝试引用它,但它不起作用,我更新了帖子以包含完整的堆栈跟踪 -
好的,这个错误告诉你
token是None;它不是直接从 dotenv 代码本身抛出的。
标签: python linux environment-variables dotenv