Variables de entorno con python-dotenv

Clase 5 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Gestionar variables por entorno en Python es clave para separar desarrollo y producción sin exponer secretos. Aquí verás cómo usar variables de entorno, el archivo .env y la librería python-dotenv para leer valores con os.environ.get, además de buenas prácticas de seguridad y control de versiones.

¿Qué problema resuelven las variables de entorno?

Las configuraciones cambian entre máquinas y fases. Por ejemplo, app_mode debería ser "local" en tu equipo y "production" en el servidor. Incluir estos valores en el código y subirlos al repositorio genera conflictos y riesgos.

  • Variables de entorno: guardan configuración fuera del código. Solo aceptan string.
  • Separación por entorno: "local" en desarrollo, "production" en producción.
  • Seguridad: evita exponer secretos en el repositorio.

¿Cómo definir y leer variables con export y os.environ.get?

Primero, define la variable en Linux con export. Luego, léela en Python con os.environ.get usando la key que definiste.

¿Cómo se define app_mode en Linux?

Ejecuta en la terminal:

export app_mode=local
  • Se crea la variable de entorno app_mode con valor "local".
  • Queda disponible para procesos de Python que se inicien después del export.

¿Cómo leer la key en Python?

Importa os y usa environ.get para obtener la variable.

import os

mode = os.environ.get("app_mode")
print(mode)
  • Si la variable existe, verás "local" impreso.
  • Si ejecutas con un servidor como Unicorn y tienes dos workers, verás la salida duplicada porque el primer request activa ambos. Esto explica por qué el valor puede imprimirse dos veces.

¿Cómo usar un archivo .env y la librería python-dotenv?

Definir cada export manualmente es engorroso. Centraliza tus variables en un .env y cárgalas automáticamente con python-dotenv. Así evitas errores y mantienes orden.

¿Qué debe incluir .env?

Crea un archivo llamado .env en tu proyecto con tus variables:

app_mode=local
secret=Super secret
  • Guarda todas las variables en un solo lugar.
  • Recomendación: nunca subas .env al repositorio porque puede tener datos sensibles como contraseñas.
  • Casos de uso: login con Facebook y claves de API, contraseña de la base de datos en producción.

¿Cómo instalar y cargar python-dotenv?

Instala la librería y fija la versión en requirements.txt.

pip install python-dotenv==1.0.0

En requirements.txt:

python-dotenv==1.0.0

Carga automáticamente el .env al iniciar tu app de Python:

from dotenv import load_dotenv
import os

load_dotenv('.env')  # inserta variables del .env al entorno

mode = os.environ.get('app_mode')
secret = os.environ.get('secret')
print(mode)
print(secret)
  • load_dotenv toma el path del archivo y lo inyecta al entorno.
  • Ya no necesitas hacer export manualmente para cada variable.
  • Práctica recomendada: valida en tu código que las variables críticas existan.

Habilidades que consolidarás: - Definir variables con export en Linux. - Leer variables con os.environ.get en Python. - Centralizar configuración con .env y cargarla con python-dotenv. - Versionar dependencias en requirements.txt. - Proteger secretos evitando subir .env al repositorio.

Idea para experimentar y aprender: - Crea una variable con export y la misma en .env, luego verifica cuál toma prioridad al leer con os.environ.get. Así entenderás dónde modificar valores cuando hagas cambios.

¿Tienes un caso real que quieras configurar con variables de entorno o dudas sobre buenas prácticas? Compártelo en comentarios y seguimos la conversación.

      Variables de entorno con python-dotenv