Juan M. Núñez
Posted on September 10, 2024
En mi último proyecto personal he necesitado almacenar la clave de una API de forma segura. La forma más recomendable de hacerlo parece ser almacenarlas como variables de entorno. Dado que almacenar multitud de variables de entorno de distintos proyectos en mi máquina resulta un engorro, he dado con una alternativa sencilla con la que manejar esta situación.
La solución pasa por utilizar el módulo python-dotenv
, que da soporte a nuestro código para utilizar variables almacenadas en un archivo .env
independiente como si se trataran de variables de entorno habituales.
El proceso es muy sencillo...
1. Crear el archivo .env y dar valor a las variables.
En primer lugar creamos un archivo .env
en el que almacenamos las variables:
# Definimos las variables en el archivo .env
VARIABLE1 = "Valor 1"
VARIABLE2 = "Valor 2"
Este archivo puede ser creado tanto en la carpeta raíz como en otra ubicación dentro de nuestro proyecto.
2. Importar el módulo dotenv.
Importamos el módulo dotenv
, y en concreto la función load_dotenv
en nuestro proyecto. También tendremos que importar el módulo os
para importar las variables de entorno una vez cargado el contenido del .env
:
from dotenv import load_dotenv
import os
Dado que no es un módulo nativo de Python, requiere ser instalado por medio de Pip, con el comando pip install python-dotenv
.
3. Recuperar las variables.
La función load_dotenv()
carga las variables al programa como variables de entorno. Con el módulo os
podemos recuperar sus valores y asignárselos a variables dentro del proyecto:
# Cargamos las variables del archivo como variables de entorno.
load_dotenv()
# Se almacena el valor "Valor 1" de la primera variable.
VARIABLE1 = os.getenv("VARIABLE1")
# Otra forma de recuperar el valor de la variable.
VARIABLE2 = os.environ.get("VARIABLE2")
Si el archivo .env
no se encuentra en la misma ruta en la que se ejecuta el código, debemos definir la ubicación del archivo:
load_dontenv(path="ruta/.env")
Posted on September 10, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.