Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


Build Status

Override Python dict contents with YAML file and/or environment variables.

Originally created for Django settings but may be useful in other cases.


pip install settings-overrider



from settings_overrider import override


# at the end of the file
override(globals(), ...)

Use YAML file path:

override(globals(), yaml='/etc/project-settings.yaml')

Use YAML file:

with open('/etc/project-settings.yaml') as f:
    override(globals(), yaml=f)

Use all environment variables with specified prefix:

override(globals(), env='PRJ_')

Prefix will be omitted, i.e. PRJ_DEBUG variable will become DEBUG setting.

Variable content will be parsed as YAML so you can use:

  • True / False: bool
  • Text / "Text": string
  • 123: number
  • { default: { ENGINE: django.db.backends.sqlite3, NAME: /tmp/prj.sqlite3 }} - nested dicts

You can combine YAML file and environment variables.

Contribute and test

git clone
cd settings-overrider
pip install -e '.[test]'