使用 python-dotenv 的默认变量

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

我想制作一个开箱即用的软件包,具有合理的默认变量,例如定义一些服务器、端口等,以便代码可以像普通用户所期望的那样工作,而无需进一步配置。 但如果 .env 文件存在,我希望覆盖此环境变量,以便允许配置其他环境。 我读到,如果不存在 .env 文件,python-dotenv load_values 将使用默认值,但 pypi 上没有示例如何理想地进行设置。

python environment-variables python-dotenv
3个回答
1
投票

我认为这个方法可行。

default_dict = {'API_KEY':'test'} #e.x for an api_key 

try:
    load_dotenv(find_dotenv())
    api_key = os.getenv("API_KEY")
except:
    api_key = default_dict['API_KEY']


1
投票

阅读@chepner的评论,我认为可能有一个使用合并的解决方案。还不知道有这个功能。

from dotenv import dotenv_values


default_envs = {"MY_SERVER": "https://my-server.com"}
config = {
    **default_envs,
    **dotenv_values
}

这可能很好,因为它允许部分覆盖,而且我不需要遍历所有变量。

欢迎评论。


0
投票

python_dotenv 只是将变量加载到环境的便捷方法

您可以添加一个选项来覆盖已经存在的环境变量

load_dotenv(override=True)

可以在这里找到 env 定义的顺序: https://github.com/theskumar/python-dotenv?tab=readme-ov-file#variable-expansion

要加载默认值,只需使用

os.getenv
实现

os.getenv(key, default = None)
© www.soinside.com 2019 - 2024. All rights reserved.