Variables de entorno con Dotenv en Python

Tony GB
2 min readOct 6, 2019

--

Photo by Christina Morillo

A todos nos ha pasado que, mientras creamos un simple script en Python para importar datos a nuestra base de datos, necesitamos definir los parámetros de conexión. Normalmente los parámetros son diferentes en la base de datos de desarrollo y en la de producción.

Según la metodología Twelve-Factor App eres malo, malísimo si guardas la configuración directamente en el código fuente. Entre otras cosas, porque puedes estar publicando información sensible a ojos indiscretos.

Lo mejor es ponerlo en un archivo de configuración, pero ¡OJO!… No incluyas este archivo en el repositorio. Entonces, ¿cómo lo hacemos?

Los archivos .env (Dotenv) vienen al rescate y, casi en cualquier lenguaje, puedes encontrar una librería o paquete que te hace la vida más fácil. En Python, el paquete en cuestión es python-dotenv.

¿Cómo es un archivo .env?

Pues es un simple archivo de texto donde, en cada línea, definimos una variable de entorno y le asignamos su valor mediante el operador =.

PG_USER=postgres
PG_PASSWORD=miclavesupersecreta
PG_DBNAME=labasededatos
PG_HOST=elservidor
API_KEY=la_key_supersecreta

Para no guardar estos datos sensibles en nuestro repositorio, es importante agregar al archivo .gitignore el archivo .env y, para no perder de vista las variables de entorno que podemos configurar, duplicar el archivo como .env.sample, eso sí, sin poner los valores reales. De esta forma, cuando descarguemos nuestro proyecto, bastará con copiar el archivo .env.sample y renombrarlo a .env.

Muy bien, ¿pero cómo lo usamos?

Lo primero será instalar el paquete mediante pip

pip install python-dotenv

Después, en nuestro script, simplemente importamos la dependencia y cargamos los valores:

import os
from dotenv import load_dotenv
load_dotenv()# una vez cargados los valores, podemos usarlos
API_KEY = os.getenv(‘API_KEY’)

Simple, ¿no?

--

--