Algumas questões no mundo do desenvolvimento de casas de pit têm o poder mágico de criar exércitos inteiros de pessoas, encaminhá-los para uma guerra santa e forçá-los a se jogar com montes de argumentos, cálculos e códigos. Às vezes, quando o argumento termina, os exércitos em guerra rapidamente se movem para a guerra jogando pilhas de excremento verbal.
Os tópicos populares incluem:
- Devo escrever este projeto em Python?
- Que estrutura a ser adotada para o desenvolvimento?
- Quem é mais rápido, a biblioteca X ou a biblioteca Y?
Hoje vou tentar escolher apenas um desses tópicos mágicos - a pergunta "Como gerenciar configurações em um projeto?".

Obviamente, existem várias maneiras de configurar um programa ao vivo.
- Variáveis de ambiente (junto com arquivos .env para o heap).
- Todos os tipos de arquivos especializados nos formatos yaml, json, xml, ini.
- * .py arquivos com classes ou "constantes".
- configparser da biblioteca padrão do Python.
- Soluções auto-escritas baseadas em classes, módulos, arquivos, telepatia, magia negra (ou todos juntos).
- Gerenciadores de configuração integrados à estrutura (como, por exemplo, no Flask).
Existem maneiras suficientes, você pode escolher qualquer coisa e usá-lo. Mas o progresso seria interrompido se as pessoas não tentassem melhorar e otimizar tudo em sequência (incluindo o que está funcionando há muito tempo e com qualidade aceitável). As mãos dos entusiastas finalmente chegaram às configurações dos aplicativos Python.
Então havia dynaconf
Os desenvolvedores não estavam particularmente preocupados com a invenção de suas abordagens astutas e reuniram todos os métodos populares de trabalhar com configurações sob o teto de uma.
- Você pode ler arquivos (.json, .ini, yaml e o novo .toml, que também vale a pena conhecer)
- Você pode selecionar variáveis de ambiente e arquivos .env
- Você pode usar armazenamento e serviços externos (do Redis simples ao armazenamento seguro especial com senhas)
- Tudo isso se funde com sucesso com as configurações dos frameworks Flask e Django.
E, é claro, no topo adicionamos um conjunto de bolos que facilita a vida em qualquer projeto
- Ambientes de comutação fáceis dev / teste / teste / produção.
- As configurações padrão.
- Ativar e desativar recursos no código (profissionais de marketing, gerentes de produto e testadores ficarão felizes).
- Um utilitário de console que permite alterar as configurações do projeto rapidamente, sem tocar no código.