【问题标题】:Python-dotenv could not parse statement starting at line 2Python-dotenv 无法解析从第 2 行开始的语句
【发布时间】:2020-10-06 19:22:15
【问题描述】:

我已经卸载并重新安装了 python-dotenv,但仍然出现同样的错误。 有人可以排序吗?

【问题讨论】:

  • 如果 python-dotenv 错误消息提到它不喜欢哪个文件,那就太好了。在我的例子中,它显示line 7,但我的.env 文件只有3 行。

标签: flask terminal development-environment web-development-server python-venv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    这可能会有所帮助

    【讨论】:

      【解决方案3】:

      对我来说,当我从 .env 文件中删除等号后的空格并删除撇号 (') 和引号 (") 时,问题就消失了。所以代替这个 .env:

      FOO = 'something'
      BAR = "something_else"
      

      尝试将 .env 更改为:

      FOO=something
      BAR=something_else
      

      【讨论】:

        【解决方案4】:

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

        ENV VAR=值

        python env 和 env 文件仅限于带有下划线的名称标识符,等号和左侧的所有内容都被视为标识符的值。 “ENV”部分违反了严格的规则......

        它必须是 VAR=值

        不久前,希望这对其他人有所帮助

        【讨论】:

          【解决方案5】:

          不确定具体原因是什么。我也有同样的问题。如果我没记错的话,我的问题是在使用 vim 将 var=value 对粘贴到 .env 文件中后出现的。

          用退格键删除var=value,手动输入var=value(不粘贴)对我有用。*

          【讨论】:

            猜你喜欢
            • 2020-08-26
            • 2016-05-01
            • 2019-07-15
            • 1970-01-01
            • 2022-07-05
            • 2022-11-12
            • 1970-01-01
            • 2021-11-01
            • 2021-12-11
            相关资源
            最近更新 更多