【发布时间】:2020-10-06 19:22:15
【问题描述】:
【问题讨论】:
-
如果 python-dotenv 错误消息提到它不喜欢哪个文件,那就太好了。在我的例子中,它显示
line 7,但我的.env文件只有3 行。
标签: flask terminal development-environment web-development-server python-venv
【问题讨论】:
line 7,但我的.env 文件只有3 行。
标签: flask terminal development-environment web-development-server python-venv
确保您的 .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 文件的最后一行为空,就会发生这种情况。
一些快速测试表明它出现在 0.10.4 中; 0.10.3 不显示警告。
https://github.com/theskumar/python-dotenv/issues/235
这可能会有所帮助
【讨论】:
对我来说,当我从 .env 文件中删除等号后的空格并删除撇号 (') 和引号 (") 时,问题就消失了。所以代替这个 .env:
FOO = 'something'
BAR = "something_else"
尝试将 .env 更改为:
FOO=something
BAR=something_else
【讨论】:
就我而言,这不是问题,即使我最后也有空行。 罪魁祸首是从 Dockerfile 复制的违反严格规则的行
ENV VAR=值
python env 和 env 文件仅限于带有下划线的名称标识符,等号和左侧的所有内容都被视为标识符的值。 “ENV”部分违反了严格的规则......
它必须是 VAR=值
不久前,希望这对其他人有所帮助
【讨论】:
不确定具体原因是什么。我也有同样的问题。如果我没记错的话,我的问题是在使用 vim 将 var=value 对粘贴到 .env 文件中后出现的。
用退格键删除var=value,手动输入var=value(不粘贴)对我有用。*
【讨论】: