确保您的 .env 文件仅包含以下格式的数据:
MY_ENV_VAR = value
除此之外的任何东西,如果您尝试检索它们,您都会得到
NoneType
。
当您尝试检索这些内容时,您可以执行以下操作:
from pathlib import Path
from dotenv import load_dotenv
env_path = Path('.', '.env')
load_dotenv(dotenv_path=env_path)
my_env_var = os.getenv('MY_ENV_VAR')
env_path
只是您的.env
文件的路径。这 '。'是您的应用程序的根目录。您甚至可以在 dotenv_path
参数中传递它,例如 '\path\to\your\.env'
,例如load_dotenv(dotenv_path='\path\to\your\.env')
。
编辑:
如果您将其添加到终端中,请确保
=
符号周围没有空格。例如:
Linux:
$ export MY_ENV_VAR=value
窗户:
> set MY_ENV_VAR=value
对我来说,当我从 .env 文件中删除等号后的空格并删除撇号 (
'
) 和引号 ("
) 时,问题就消失了。所以代替这个 .env:
FOO = 'something'
BAR = "something_else"
尝试将 .env 更改为:
FOO=something
BAR=something_else
我也看到这个了。如果 .env 文件中的最后一行为空,就会发生这种情况。
一些快速测试表明它出现在0.10.4中; 0.10.3 不显示警告。
https://github.com/theskumar/python-dotenv/issues/235
这可能有帮助
就我而言,这不是问题,即使我最后有空行。 罪魁祸首是从 Dockerfile 复制的违反严格规则的行
环境变量=值
python env 和 env 文件仅限于带有下划线的名称标识符,等号和左边的全部被视为标识符的值。 “ENV”部分打破了严格的规则......
它必须是公正的 VAR=值
前一段时间,希望这对其他人有帮助
不确定确切原因是什么。我也有同样的问题。如果我没记错的话,在我的例子中,使用 vim 将
var=value
对粘贴到 .env
文件中后出现了问题。
用退格键删除
var=value
,然后手动输入 var=value
(不粘贴)对我有用。*
当我的 .env 文件中的注释以
;
开头时,我遇到了同样的错误
我的
Visual Studio Code
出于某种原因注释掉了 .env 文件中用 ;
代替 #
的行
因此,要修复该错误,我只需在注释行中将
;
替换为 #
只需检查您的 .env 文件即可