toml|yaml|json|ini|py
, а также настраиваемые загрузчики.[default, development, testing, production]
init, list, write, validate, export
.$ pip install dynaconf
$ cd path/to/your/project/
$ dynaconf init -f toml
Configuring your Dynaconf environment
------------------------------------------
? The file `config.py` was generated.
?️ settings.toml created to hold your settings.
? .secrets.toml created to hold your secrets.
? the .secrets.* is also included in `.gitignore`
beware to not push your secrets to a public repo.
? Dynaconf is configured! read more on https://dynaconf.com
СОВЕТ: Вы можете выбрать
toml|yaml|json|ini|py
вdynaconf init -f <fileformat>
toml — это формат по умолчанию, а также наиболее рекомендуемый формат для настройки.
.
├── config.py # This is from where you import your settings object (required)
├── .secrets.toml # This is to hold sensitive data like passwords and tokens (optional)
└── settings.toml # This is to hold your application settings (optional)
В файле config.py
Dynaconf init генерирует следующий шаблон:
from dynaconf import Dynaconf
settings = Dynaconf (
envvar_prefix = "DYNACONF" , # export envvars with `export DYNACONF_FOO=bar`.
settings_files = [ 'settings.yaml' , '.secrets.yaml' ], # Load files in the given order.
)
СОВЕТ: вы можете создавать файлы самостоятельно вместо использования команды
init
, как показано выше, и вы можете дать любое имя вместо имениconfig.py
по умолчанию (файл должен находиться в вашем импортируемом пути Python). См. дополнительные параметры, которые вы можете перейти к инициализатору классаDynaconf
на https://dynaconf.com
Поместите свои настройки в settings.{toml|yaml|ini|json|py}
username = " admin "
port = 5555
database = { name = ' mydb ' , schema = ' main ' }
Поместите конфиденциальную информацию в .secrets.{toml|yaml|ini|json|py}
password = " secret123 "
ВАЖНО: команда
dynaconf init
помещает.secrets.*
в ваш.gitignore
, чтобы избежать его раскрытия в публичных репозиториях, но вы несете ответственность за его безопасность в локальной среде, а для производственных сред рекомендуется использовать встроенный в поддержку службы Hashicorp Vault для паролей и токенов.
При желании теперь вы можете использовать переменные среды для переопределения значений для каждого выполнения или для каждой среды.
# override `port` from settings.toml file and automatically casts as `int` value.
export DYNACONF_PORT=9900
В ваш код импортируйте объект settings
from path . to . project . config import settings
# Reading the settings
settings . username == "admin" # dot notation with multi nesting support
settings . PORT == 9900 # case insensitive
settings [ 'password' ] == "secret123" # dict like access
settings . get ( "nonexisting" , "default value" ) # Default values just like a dict
settings . databases . name == "mydb" # Nested key traversing
settings [ 'databases.schema' ] == "main" # Nested key traversing
Вы можете сделать гораздо больше, прочитайте документацию: http://dynaconf.com
Основные обсуждения происходят на вкладке «Обсуждения». Узнайте больше о том, как принять участие, в руководстве CONTRIBUTING.md.
Если вы ищете что-то похожее на Dynaconf для использования в своих проектах Rust: https://github.com/rubik/гидроconf
И отдельное спасибо Caneco за логотип.