Python 在Linux中,环境变量未使用load_dotenv()加载
我正在尝试创建一个不协调的bot,当我尝试用load_dotenv()加载一个.env时,它不起作用,因为它说Python 在Linux中,环境变量未使用load_dotenv()加载,python,linux,environment-variables,dotenv,Python,Linux,Environment Variables,Dotenv,我正在尝试创建一个不协调的bot,当我尝试用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
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
还有save.env文件:(这是一个假的令牌)
两个文件都在同一个目录中,我甚至尝试使用
env_path = Path('path/to/file') / '.env'
load_dotenv(dotenv_path=env_path)
但这也不起作用我尝试在ubuntu 20.04和python dotenv 0.15.0上加载我的环境配置时遇到了相同的错误。我能够使用python解释器纠正这个问题,它将注销在尝试加载环境时遇到的任何错误。只要成功加载环境变量,load_dotenv()就会返回
True
对我来说,是配置文件的问题(语法错误)破坏了加载过程。我所需要做的就是转到我的环境变量config文件并修复损坏的语法
加载环境变量(从python的解释器)时,请尝试传递
verbose=True
,以从load\u dotenv获取更多信息。因此我花了一些时间。我的load_dotenv()返回True
我在一些记录后面有逗号,这是不正确的
一旦删除逗号,变量就工作了。
这主要是关于<代码> DOTENV库的问题,它不是Python或Linux本身的一部分,考虑对该库的标记。BTW,这是猜测,但如果引用令牌的值,它会起作用吗?也就是说:DISCORD_-TOKEN='{…}'
…包含异常的堆栈跟踪也会很有帮助;如果我们知道哪一行最初抛出了异常,我们将知道哪个值意外地是None
,而不是包含字符串。@CharlesDuffy很抱歉,我使用的是我随pip安装的python dotenv
库。我试着引用它,但它不起作用,我更新了帖子以包含完整的堆栈traceOkay,因此错误告诉您token
是None;它不是直接从dotenv代码本身抛出的。
# .env
DISCORD_TOKEN={Bzc0NjfUH8fEWFjg2NDMyMjY2.X6coqw.JyiOR89JIH7fFFoyOMufK_1A}
env_path = Path('path/to/file') / '.env'
load_dotenv(dotenv_path=env_path)