Cómo Utilizar Variables de Entorno en Python
Python
La mayoria de las aplicaciones que desarrollamos tiene como objetivo ser desplegadas en un servidor, por lo que es necesario que estas puedan ser configuradas de manera dinámica. Para esto, es común que utilicemos variables de entorno para almacenar información sensible como credenciales de acceso a bases de datos, claves de API, etc.
En este artículo veremos cómo utilizar variables de entorno en Python.
¿Qué es una variable de entorno?
Una variable de entorno es un valor que se almacena en el sistema operativo y que puede ser accedido por cualquier aplicación que se ejecute en el mismo. Estas variables son útiles para almacenar información sensible que no queremos que sea accesible por cualquier persona que tenga acceso al código fuente de nuestra aplicación.
¿Qué es un archivo .env?
Un archivo .env
es un archivo de texto plano que contiene una lista de variables de entorno. Este archivo es utilizado por la librería python-dotenv para cargar las variables de entorno en la aplicación.
¿Cómo utilizar variables de entorno en Python?
Para utilizar variables de entorno en Python, podemos hacer uso de la librería python-dotenv. Esta librería nos permite cargar variables de entorno desde un archivo .env
y acceder a ellas a través de la librería estándar os.
Para instalar la librería python-dotenv
, podemos ejecutar el siguiente comando:
pip install python-dotenv
Una vez instalada la librería, podemos crear un archivo .env
en la raíz de nuestro proyecto y agregar las variables de entorno que necesitemos, por ejemplo:
# .env
DB_HOST=localhost
DB_PORT=5432
DB_NAME=database
DB_USER=user
DB_PASSWORD=password
Luego, podemos cargar las variables de entorno desde el archivo .env
utilizando la función load_dotenv
de la librería python-dotenv
:
# app.py
from dotenv import load_dotenv
load_dotenv()
load_dotenv
primero busca un archivo .env
en la raíz del proyecto y luego carga las variables de entorno que se encuentren en el mismo. Si no encuentra un archivo .env
en la raíz del proyecto, entonces buscará un archivo .env
en el directorio actual.
# app.py
from dotenv import load_dotenv
load_dotenv()
host = os.getenv("DB_HOST")
port = os.getenv("DB_PORT")
name = os.getenv("DB_NAME")
user = os.getenv("DB_USER")
password = os.getenv("DB_PASSWORD")
Por defecto, load_dotenv
busca un archivo .env
en la raíz del proyecto. Si queremos cargar un archivo .env
que se encuentre en otro directorio, podemos utilizar el argumento dotenv_path
:
# app.py
from dotenv import load_dotenv
dotenv_path = Path('path/to/.env')
load_dotenv(dotenv_path=dotenv_path)
Si no se encuentra en un ambiente de desarrollo, y el proyecto esta implementado en un entorno hosteado, como una máquina virtual o un contenedor, el archivo .env
no estará presente, y se utilizarán las variables de entorno que se encuentren definidas en el host. Por ejemplo, si la aplicación esta implementada en un contenedor de Docker, puede utilizar --env-file .env
con el comando docker run
, de esta manera, las variables de entorno definidas en el archivo .env
serán cargadas en el contenedor.
Para la mayoria de los casos, no es necesario especificar nada más para que la librería python-dotenv
sea productiva, para más información sobre la librería, pueden consultar la documentación oficial en https://pypi.org/project/python-dotenv/.
Utilizar un archivo .env
nos permite tener un control de las variables de entorno que se utilizan en el proyecto, asi como tener un ambiente de desarrollo más limpio y ordenado.