Python

Dynaconf:适用于所有环境的 Python 配置管理

Dynaconf 是一个 Python 配置管理库,支持多种文件格式、环境变量、密码库和分层设置。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Dynaconf:适用于所有环境的 Python 配置管理

配置管理是一个看似简单的问题,直到你需要处理多个环境、数百个配置以及灵活性与安全性之间的持续拉锯。Dynaconf(GitHub 上的 dynaconf/dynaconf)是一个 Python 配置管理库,它以最少的样板代码,提供一个在开发、测试和生产环境中都能运行的统一系统,直接应对了这一挑战。

由 Bruno Rocha 创建,并由专门的社区维护,Dynaconf 已成长为最受欢迎的 Python 配置库之一,在 GitHub 上拥有超过 3,500 颗星。其设计理念很直接:配置应该是分层的、类型安全的、感知环境的,并且能够从多个后端加载,而不需要修改应用程序代码。

该库支持 YAML、TOML、INI、JSON 和 Python 文件,以及环境变量、Redis、HashiCorp Vault 和 AWS SSM Parameter Store。这种广泛的支持意味着,单一的 Dynaconf 配置可以处理从本地开发环境的 TOML 文件,到从 Vault 提取机密、从 Redis 提取功能标志的生产环境配置,全部通过一致的 Python API。


配置层架构

Dynaconf 的强大来自其分层配置系统,配置从最通用到最具体层层递进:

每个层级都可以覆盖前一个层级,Dynaconf 在整个过程中保持完整的类型信息。这意味着默认配置中的字符串值可以被环境变量中的布尔值覆盖,并由 Dynaconf 的验证系统自动进行类型转换。


格式与后端支持

配置来源格式 / 后端典型使用案例
配置文件YAML, TOML, JSON, INI, Python版本控制的默认值
环境文件.env 文件本地覆盖
机密文件.secrets.toml版本控制系统外的敏感数据
环境变量ENV_PREFIX_*容器 / CI 配置
外部密码库HashiCorp Vault生产环境机密
键值存储Redis动态功能标志
参数存储AWS SSM云原生部署

验证与类型安全

Dynaconf 最突出的功能之一是其验证系统,可以在配置错误导致运行时故障之前就将其捕获。验证器可以强制类型、检查数值范围、要求特定键,甚至验证跨字段依赖关系。

from dynaconf import Dynaconf, Validator

settings = Dynaconf(
    settings_files=["settings.toml"],
    validators=[
        Validator("VERSION", must_exist=True),
        Validator("DATABASE.HOST", must_exist=True),
        Validator("DATABASE.PORT", must_exist=True, ne=0),
        Validator("DEBUG", must_exist=True, is_type_of=bool),
    ]
)

这种主动验证方法消除了整类与配置相关的错误,这些错误通常只有在加载特定环境或执行特定代码路径时才会出现。


推荐的外部资源


常见问题

什么是 Dynaconf? Dynaconf 是一个 Python 配置管理库,支持多种文件格式、环境变量、密码库后端和分层设置。

Dynaconf 如何处理环境特定配置? 使用基于环境的分层系统,自动从 ENV_FOR_DYNACONF 等变量读取当前环境。

Dynaconf 支持哪些文件格式? 支持 YAML、TOML、INI、JSON、Python 文件和环境变量。

Dynaconf 与 Python 内置的 configparser 相比如何? 提供类型转换、验证、分层合并、密钥管理和对现代格式的支持。

Dynaconf 能处理机密和敏感数据吗? 是的,包含内置的机密管理支持,可与 HashiCorp Vault 集成。


延伸阅读

TAG
CATEGORIES