dotenv 是 python 中的一个工具包,作用是读取项目中的.env文件,将.env文件中定义的环境变量导入到当前的环境中供当前程序使用。.env文件是一个配置文件,其中包含的key-value键值对表示程序所需要用到的环境变量。

安装

在使用前,需要先安装 dotenv 包,可以使用如下命令:

# Pip 命令
pip install python-dotenv
# Conda 命令
conda install python-dotenv

如果应用程序从环境变量(如 12 因子)获取其配置 应用程序,在开发中启动它不是很实用,因为您必须设置 这些环境变量本身。

为了帮助您解决这个问题,您可以将 Python-dotenv 添加到您的应用程序中,使其在文件.env存在时(例如在开发中)从文件加载配置,同时保持可通过环境进行配置:

from dotenv import load_dotenv

load_dotenv()  # take environment variables from .env.

# Code of your application, which uses environment variables (e.g. from `os.environ` or
# `os.getenv`) as if they came from the actual environment.

默认情况下, load_dotenv 不会覆盖现有环境变量。

# 加载文件名为.env的文件作为环境变量,如果系统中已有重复的环境变量,则替换。
load_dotenv(dotenv_path = ".env", override = True)

要配置开发环境,请在 .env yournproject 的根目录中添加一个:

.
├── .env
└── foo.py
.env python-dotenv 支持的文件的语法与 Bash 类似:

# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app

如果在值中使用变量,请确保它们被 { 和 }liken 括起来,${DOMAIN}作为裸变量,例如 $DOMAIN 未展开。

您可能希望添加到 .env 您的 .gitignore,特别是如果它包含密码等 snsecrets。

请参阅下面的“文件格式”部分,了解有关可以在文件中写入的内容的更多信息 .env。

其他用例

在不改变环境的情况下加载配置

该函数 dotenv_values 的工作方式或多或少与 load_dotenv相同,只是它不触及环境,它只是返回一个 dict 包含从该文件解析的值 .env。

from dotenv import dotenv_values

config = dotenv_values(".env")  # config = {"USER": "foo", "EMAIL": "foo@example.org"}

这尤其支持高级配置管理:

import os
from dotenv import dotenv_values

config = {
    **dotenv_values(".env.shared"),  # load shared development variables
    **dotenv_values(".env.secret"),  # load sensitive variables
    **os.environ,  # override loaded values with environment variables
}
作者:Jeebiz  创建时间:2023-12-23 23:22
最后编辑:Jeebiz  更新时间:2024-06-06 00:29