在Linux中环境变量未与load_dotenv一起加载

问题描述

我正在尝试制作一个不和谐的机器人,当我尝试使用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}

两个文件都在同一个目录中,我什至尝试用.p显式指定.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

对我来说,这是我的配置文件(语法错误)的一个问题,它破坏了加载过程。我需要做的就是转到我的环境变量配置文件并修复损坏的语法..

尝试在加载环境变量(来自 python 的解释器)时传递 verbose=True 以从 load_dotenv 获取更多信息。

,

所以这花了我一段时间。我的 load_dotenv() 返回 True。

我在一些不正确的记录后面加了逗号。

删除逗号后,变量就起作用了。