为什么我必须使用 python-dotenv 才能将环境变量加载到 Python?

Why I have to use python-dotenv in order to load env variables to Python?

我正在尝试在 python 脚本中读取环境文件中的一些变量 myfile.env:

LOCALHOST='1'

如果在我的 python 脚本中我只是 运行:

import os
print(os.environ)

它打印:

environ({'PATH': '....', 'HOSTNAME': '...', 'PYCHARM_HOSTED': '1', 'PYTHONUNBUFFERED': '1'})

但是在这些数组中我没有 LOCALHOST 变量。我发现我可以使用 python-dotenv 现在我看到它并且可以工作,但我不明白为什么我必须使用它,并且仅使用 os 模块加载它们是不可行的。

因为 .env 文件不是环境。

os.environ 从环境中获取数据,有些过于简单,它是操作系统为每个进程维护的 string-to-string (name-to-value) 映射,并由子进程继承。通常使用 shell 中的 export 语句将事物放置在那里 – 然后它们将被从该 shell 开始的所有进程继承 – 但还有其他方式。

.env 文件是 application-level 的东西;操作系统 not 知道它们并且它们 not 自动加载到环境中(因此 notos.environ 选中)。这就是 python-dotenv 为您服务的。