Skip to content
@dynaconf

Dynaconf

Configuration Settings for Python

Dynaconf

Dynaconf is Configuration Management for Python.

MIT License PyPIcodecov GitHub Release Date GitHub last commit Discussions

Features

  • Inspired by the 12-factor application guide
  • Settings management (default values, validation, parsing, templating)
  • Protection of sensitive information (passwords/tokens)
  • Multiple file formats toml|yaml|json|ini|py and also customizable loaders.
  • Full support for environment variables to override existing settings (dotenv support included).
  • Optional layered system for multi environments [default, development, testing, production] (also called multi profiles)
  • Built-in support for Hashicorp Vault and Redis as settings and secrets storage.
  • Built-in extensions for Django and Flask web frameworks.
  • CLI for common operations such as init, list, write, validate, export, get.
  • and many more features...

Installation

Install from pypi

pip install dynaconf

Read the docs on Dynaconf.com

Quick Start

Looking for Flask or Django plugins?

config.py

from dynaconf import Dynaconf
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

from config import settings

if settings.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

Try it online

Read the docs on Dynaconf.com

Pinned

  1. dynaconf Public

    Configuration Management for Python

    Python 2.7k 233

Repositories

Top languages

Loading…

Most used topics

Loading…