Algunas preguntas en el mundo del desarrollo de la casa del pozo tienen el poder mágico de levantar ejércitos enteros de personas, dirigirlos a una guerra santa y obligarlos a enfrentarse entre sí con montones de argumentos, cálculos y códigos. A veces, cuando termina la discusión, los ejércitos en guerra se mueven rápidamente hacia la guerra arrojando montones de excremento verbal.
Los temas populares incluyen:
- ¿Debería incluso escribir este proyecto en Python?
- ¿Qué marco tomar para el desarrollo?
- ¿Quién es más rápido, la biblioteca X o la biblioteca Y?
Hoy trataré de elegir suavemente uno de estos temas mágicos: la pregunta "¿Cómo administrar las configuraciones en un proyecto?".

Obviamente, hay muchas maneras de configurar un programa en vivo.
- Variables de entorno (junto con archivos .env en el montón).
- Todo tipo de archivos especializados en formatos yaml, json, xml, ini.
- * .py archivos con clases o "constantes".
- configparser de la biblioteca estándar de Python.
- Soluciones autoescritas basadas en clases, módulos, archivos, telepatía, magia negra (o todos juntos).
- Administradores de configuración integrados en el marco (como, por ejemplo, en Flask).
Hay suficientes formas, puedes elegir cualquier cosa y usarla. Pero el progreso se detendría si las personas no intentaran mejorar y optimizar todo en una fila (incluido algo que ha estado funcionando durante mucho tiempo y con una calidad aceptable). Las manos de los entusiastas finalmente llegaron a las configuraciones de las aplicaciones Python.
Entonces hubo dynaconf
Los desarrolladores no estaban particularmente preocupados con la invención de sus enfoques astutos y reunieron todos los métodos populares de trabajar con configuraciones bajo el techo de uno.
- Puede leer archivos (.json, .ini, yaml y el nuevo .toml, que también vale la pena conocer)
- Puede recoger variables de entorno y archivos .env
- Puede usar almacenamiento y servicios externos (desde Redis simple hasta almacenamiento seguro especial con contraseñas)
- Todo esto se fusiona con éxito con las configuraciones de los marcos Flask y Django.
Y, por supuesto, además, agregamos un conjunto de bollos que facilita la vida en cualquier proyecto
- Entornos de conmutación fáciles de desarrollo / puesta en escena / pruebas / producción.
- La configuración predeterminada.
- Activar y desactivar las funciones en el código (los vendedores, gerentes de producto y evaluadores estarán contentos).
- Una utilidad de consola que le permite cambiar la configuración del proyecto sobre la marcha sin tocar el código.