dotenv en Python
Este artículo explicará el significado y el uso de dotenv
en Python.
El archivo .env
es un archivo individual que contiene los valores clave descritos anteriormente para todas las variables ambientales necesarias en su aplicación. El archivo se almacena localmente sin guardarse en el control de origen, por lo que no pone en riesgo información potencialmente confidencial.
El dotenv
se utiliza para leer el par de clave y valor del archivo .env
y agregarlo a la variable de entorno. Podemos usarlo para administrar la configuración de la aplicación durante las fases de desarrollo y producción utilizando su principio de 12 factores.
Las variables de entorno se establecen en un archivo similar a UNIX dentro del directorio del proyecto Python usando el módulo env
.
Para comenzar con el archivo .env
, primero necesitamos instalar la biblioteca dotenv
.
pip install python-dotenv
Usando dotenv
, nuestra aplicación puede cargar la configuración desde un archivo .env
cuando está presente (por ejemplo, durante el desarrollo) mientras conserva la configuración basada en el entorno.
Vea el siguiente ejemplo.
from dotenv import load_dotenv
config = load_dotenv(".env")
En el ejemplo anterior, usamos la función load_dotenv()
. La función dotenv_values()
funciona de manera similar a load_dotenv
. Devuelve un diccionario con valores analizados del entorno.
Por ejemplo,
from dotenv import dotenv_values
config = dotenv_values(".env")
También podemos cargar las variables de entorno desde una red en lugar de un sistema de archivos. Para esto, podemos usar la función StringIO()
del paquete io
para crear un objeto de flujo.
Consulte el siguiente código.
from io import StringIO
from dotenv import load_dotenv
config = StringIO("USER=abc\nEMAIL=abc@example.org")
load_dotenv(stream=config)
También podemos utilizar la interfaz CLI dotenv
para manipular el archivo .env
sin abrirlo manualmente.
Vea los comandos a continuación.
pip install "python-dotenv[cli]"
dotenv set USER abc
dotenv set EMAIL abc@example.org
dotenv run -- python abc.py