Gestiona tus variables de entorno en Python como un profesional con Stela. Empezar con archivos dotenv, evitar exponer secretos y convertir tipos a mano puede convertirse en un caos; Stela lo transforma en un flujo claro, seguro y predecible con inferencia automática de tipos, separación entre ajustes y secretos, soporte por entorno y una API sencilla y extensible.
Por qué importan las variables de entorno
Mantienen la configuración fuera del código fuente, evitan que credenciales entren en tu historial de Git y simplifican despliegues en contenedores, CI y servicios cloud. Con ellas puedes alternar fácilmente entre desarrollo, pruebas y producción sin tocar el código. El problema es que muchas librerías te obligan a escribir siempre el mismo boilerplate para leer archivos, castear strings y aplicar overrides. Stela automatiza todo esto.
Qué es Stela
Stela separa tu configuración en dos grupos: Ajustes no sensibles que puedes versionar como endpoints o timeouts y Secretos que deben quedar fuera del repositorio como contraseñas y tokens. Carga archivos en un orden bien definido, convierte cadenas a tipos nativos de Python y permite un cargador final opcional para obtener valores de fuentes externas como AWS Parameter Store o HashiCorp Vault.
Instalación
Comando: pip install stela
Puesta en marcha rápida
Inicializa el proyecto con: stela init --default
Esto crea los archivos de configuración habituales y actualiza tu gitignore
Archivos típicos: .env ajustes por defecto versionados, .env.local secretos ignorados, .stela configuración de Stela.
Prueba de precedencia en 3 pasos
1. Añade o descomenta MY_SECRET en .env. Abre un REPL de Python y ejecuta: from stela import env y luego print(env.MY_SECRET)
2. Cierra el REPL. Añade o descomenta MY_SECRET en .env.local. Abre de nuevo el REPL y ejecuta lo mismo. Debe ganar el valor de .env.local
3. Define la variable en el entorno del proceso y vuelve a ejecutar. En macOS o Linux: export MY_SECRET=value_from_memory. En Windows PowerShell: $env:MY_SECRET=value_from_memory. Al leer env.MY_SECRET debe ganar el valor en memoria del proceso.
Orden de lectura de dotenv y precedencia
Por defecto Stela lee .env y luego .env.local. Si defines STELA_ENV por ejemplo STELA_ENV=development, también buscará .env.development y .env.development.local
La precedencia cuando una clave existe en varios lugares es: 1 valor ya presente en memoria del sistema os.environ 2 .env.environment.local si STELA_ENV está definido 3 .env.environment si STELA_ENV está definido 4 .env.local 5 .env 6 si no se encuentra el valor, Stela lanza StelaValueError de forma predeterminada aunque es configurable.
Acceso a ajustes y secretos en tu código
Importa una sola vez y usa: from stela import env luego accede con env.API_URL env.TIMEOUT env.FEATURE_FLAG env.DB_URL. Stela se encarga de leer los archivos dotenv y exponer un objeto env único.
Inferencia de tipos automática
Ejemplos de variables en .env que Stela convierte sin esfuerzo: PORT=8000 pasa a int, DEBUG=true pasa a bool, RETRY_TIMES=3 pasa a int, PI=3.14159 pasa a float, FEATURES=[search,login,signup] se interpreta como lista, EXTRA_SETTINGS={cache:true,timeout:30} se interpreta como diccionario JSON. Nada de casteos manuales repetitivos.
Varios entornos sin dolor
Crea archivos por entorno como .env.testing o .env.production por ejemplo en .env.production coloca API_URL=https://api.ejemplo.com. Cambia de entorno con STELA_ENV=production y listo, tu código no cambia, Stela selecciona los valores adecuados automáticamente.
Separación clara entre ajustes y secretos
El comando stela init actualiza tu gitignore para que .env se versione y que .env.local y .env.*.local se ignoren. Usa .env para valores inofensivos y .env.local para credenciales reales. Así tu equipo arranca rápido sin exponer información sensible.
Loader final personalizado para fuentes externas
Además de dotenv, puedes registrar un cargador final en .stela con la opción final_loader igual a myproject.loaders.custom_loader. Implementa en myproject loaders.py una función custom_loader que recibe opciones y env_data, obtiene valores externos y devuelve el diccionario actualizado. En el arranque Stela carga los dotenv y luego ejecuta el loader para fusionar valores adicionales sin sobreescribir lo que ya está en os.environ.
Extensibilidad
¿No quieres inferencia automática de tipos, prefieres otro formato de archivos, definir un entorno por defecto o silenciar logs? Stela es flexible y configurable para encajar en tu flujo de trabajo.
Cómo encaja con Q2BSTUDIO
En Q2BSTUDIO impulsamos proyectos con software a medida y aplicaciones a medida, integrando buenas prácticas de configuración con variables de entorno, despliegues consistentes y seguridad robusta. Nuestro equipo es especialista en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, automatización de procesos, agentes IA e ia para empresas. Si buscas un partner para construir y operar plataformas modernas, podemos ayudarte de punta a punta desde la arquitectura hasta la observabilidad.
Descubre cómo llevamos tus ideas a producción con una base de configuración sólida y segura en nuestros servicios de software a medida y potencia tus despliegues con nuestros servicios cloud aws y azure.
Conclusión
Stela aporta estructura, seguridad y simplicidad a la gestión de variables de entorno en Python: inferencia de tipos sin boilerplate, separación de ajustes y secretos, soporte multiambiente y loaders personalizables. Empieza instalando la librería, inicializa tu proyecto y disfruta de una configuración limpia, segura y mantenible. Si necesitas asesoría para integrar estas prácticas en tu plataforma o migrar a un enfoque más escalable, en Q2BSTUDIO estamos listos para ayudarte.
Feliz código