Python-dotenv 无法解析从第 2 行开始的语句

问题描述 投票:0回答:7

我已经卸载并重新安装了 python-dotenv 仍然遇到同样的错误。 有人可以整理一下吗?

flask terminal development-environment web-development-server python-venv
7个回答
26
投票

确保您的 .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 

11
投票

对我来说,当我从 .env 文件中删除等号后的空格并删除撇号 (

'
) 和引号 (
"
) 时,问题就消失了。所以代替这个 .env:

FOO = 'something'
BAR = "something_else"

尝试将 .env 更改为:

FOO=something
BAR=something_else

3
投票

我也看到这个了。如果 .env 文件中的最后一行为空,就会发生这种情况。

一些快速测试表明它出现在0.10.4中; 0.10.3 不显示警告。

https://github.com/theskumar/python-dotenv/issues/235

这可能有帮助


0
投票

就我而言,这不是问题,即使我最后有空行。 罪魁祸首是从 Dockerfile 复制的违反严格规则的行

环境变量=值

python env 和 env 文件仅限于带有下划线的名称标识符,等号和左边的全部被视为标识符的值。 “ENV”部分打破了严格的规则......

它必须是公正的 VAR=值

前一段时间,希望这对其他人有帮助


0
投票

不确定确切原因是什么。我也有同样的问题。如果我没记错的话,在我的例子中,使用 vim 将

var=value
对粘贴到
.env
文件中后出现了问题。

用退格键删除

var=value
,然后手动输入
var=value
(不粘贴)对我有用。*


0
投票

当我的 .env 文件中的注释以

;

开头时,我遇到了同样的错误

我的

Visual Studio Code
出于某种原因注释掉了 .env 文件中用
;
代替
#
的行

因此,要修复该错误,我只需在注释行中将

;
替换为
#


0
投票

只需检查您的 .env 文件即可

  • 确保琴弦在打开时闭合
  • 正确评论
  • 用字符串包装可能存在冲突的字符值
© www.soinside.com 2019 - 2024. All rights reserved.