DynaconfisConfiguration Management for Python.
- Inspired by the12-factor application guide
- Settings management(default values, validation, parsing, templating)
- Protection ofsensitive information(passwords/tokens)
- Multiplefile formats
toml|yaml|json|ini|py
and also customizable loaders. - Full support forenvironment variablesto override existing settings (dotenv support included).
- Optional layered system formulti environments
[default, development, testing, production]
(also called multi profiles) - Built-in support forHashicorp VaultandRedisas settings and secrets storage.
- Built-in extensions forDjangoandFlaskweb frameworks.
- CLIfor common operations such as
init, list, write, validate, export, get
. - and many more features...
Install frompypi
pip install dynaconf
Read the docs onDynaconf
config.py
fromdynaconfimportDynaconf
settings=Dynaconf(
envvar_prefix="APP",
settings_files=["default_settings.toml"],
environments=["production","development"]
)
default_settings.toml
(yaml, ini, json, py, cfg, etc...)
[default]
name="Default Name"
debug=true
data= {value=1}
[development]
name="amber"
[production]
debug=false
name="@vault /take/from/vault/secret"
main.py
fromconfigimportsettings
ifsettings.debug:
print(f "Hello{settings.name}")
print(settings.data.value)
print(settings.get("key",default="a default value for you"))
print(settings["NAME"],",this also works as a dict")
console
$Python main.py
Hello amber
1
a default value for you
amber, this also works as a dict
#Environment Variables overrides
$APP_NAME=Bruno Python main.py
Hello Bruno
#Nested env vars works
$APP_NAME=admin APP_DATA__VALUE=42 Python main.py
Hello admin
42
Read the docs onDynaconf