Leer variables de entorno del archivo Env en Python

Jay Shaw 21 junio 2023
  1. Leer variables de entorno desde un archivo de entorno local
  2. Leer variables de entorno ejecutando un script Bash
  3. Conclusión
Leer variables de entorno del archivo Env en Python

Un archivo de entorno almacena todas las dependencias que necesita un programa para que no tenga que interactuar con paquetes de varias rutas.

Este artículo se centrará en cómo leer archivos .env en Python e importar variables de entorno en Python desde un archivo de entorno local.

Leer variables de entorno desde un archivo de entorno local

La mayoría de los programas modernos usan acopladores para ejecutar sus programas dentro de los entornos. Una ventana acoplable es como una máquina virtual alternativa con una gestión de memoria eficiente.

Pero durante la prueba, un programa debe eliminarse de un contenedor docker y probarse localmente usando un archivo de entorno local.

Este artículo explicará cómo configurar un archivo de entorno local e importar y leer archivos .env en Python.

Crear un archivo de entorno para secuencias de comandos de Python

Un archivo de entorno se crea proporcionando pares clave-valor del programa dentro de un archivo de texto y guardándolo con una extensión .env.

Cree un archivo .env siguiendo los pasos:

  • Abra el Bloc de notas y escriba las variables de entorno en él. Por ejemplo,
    MY_ENV_VAR="This is my env var content."
    
  • Guarde este archivo con un nombre seguido de la extensión .env, por ejemplo, config.env. Esto creará un archivo .env.
  • Ahora necesitamos crear un script de Python en el mismo directorio donde se encuentra el archivo .env para leer los archivos env en Python.

Cree un script de Python que lea las variables de entorno

Este programa utiliza la biblioteca python-dotenv para leer archivos .env en Python desde un archivo de entorno local. Para instalarlo, abra el símbolo del sistema o PowerShell y escriba el comando:

pip install python-dotenv

Una vez que se instala python-dotenv, podemos avanzar para cargar scripts y leer archivos env en Python. El programa utiliza dos paquetes de bibliotecas: python-dotenv y os.

Las variables de entorno se cargan en el código mediante la función de biblioteca load_dotenv(). La función load_dotenv() se utiliza para extraer variables de entorno del archivo .env.

Otra función de biblioteca es dotenv_values, que es similar a la anterior, excepto que no interactúa con las variables de entorno, sino que devuelve un dict del archivo .env con los valores analizados.

A continuación se muestra el programa Python:

import os
from dotenv import load_dotenv

load_dotenv()

MY_ENV_VAR = os.getenv("MY_ENV_VAR")

La última línea de código importa los valores de la variable MY_ENV_VAR del archivo .env usando la función os.getenv y lo almacena dentro de un programa de Python con una variable de nombre similar.

Al imprimir la variable MY_ENV_VAR se mostrará el contenido del archivo .env:

This is my env var content.

Leer variables de entorno ejecutando un script Bash

Este es el segundo método que también resolvió el problema de cuando el programa no puede leer archivos .env en Python, y la función de biblioteca load_dotenv devuelve ninguno en lugar de variables de entorno. Esto sucede porque el archivo .env no tiene fuente, lo que significa que el programa Python no puede leer el archivo .env y no puede cargar las variables de datos.

En los sistemas que ejecutan scripts de shell, la carga del archivo de entorno y la ejecución del script de Python pueden combinarse. Esto le permite cargar el archivo .env en un entorno virtual y luego ejecutar el script de Python dentro de ese entorno.

Esta sección mostrará cómo cargar variables de entorno y envolverlas en un script de shell para leer archivos .env en Python.

Crear un archivo .env

Este proceso es similar al de la sección anterior, pero en lugar de usar un editor de texto genérico como el Bloc de notas, se requiere un editor de texto que ofrezca conversiones de EOL.

Las conversiones EOL convierten el final de las líneas en un archivo de texto. Para crear un archivo como ese, necesitamos:

  • Descargue e instale Notepad++ o cualquier otro editor de texto que ofrezca conversiones de fin de línea.
  • Escriba algunas variables de entorno, como:
    TYPE=prod
    PORT=5000
    
  • Vaya a la conversión Editar > EOL y seleccione Unix (LF).
  • Guarde el archivo con una extensión .env, por ejemplo, config.env

Esto creará un archivo de entorno que los scripts de shell pueden leer. Ahora, escribamos algo de código Python.

Cree un script de Python que pueda leer archivos .env en Python

Este programa importa y lee archivos .env en Python sin necesidad de ninguna biblioteca externa de Python. El programa importa el paquete de biblioteca os y utiliza la función de biblioteca os.environ para extraer valores de las variables.

A continuación, se imprimen los valores extraídos.

import os

print(os.environ.get("TYPE"))
print(os.environ.get("PORT"))

Sin embargo, este script no puede leer archivos .env de forma independiente en Python. Ejecutar el script devuelve Ninguno.

Win 10@DESKTOP-8MEIQB8 MINGW64 ~/try
$ python test.py

None
None

Esto sucede porque la secuencia de comandos de Python no puede acceder al archivo de entorno, aunque esté dentro del mismo directorio. Esta es la razón por la que se utiliza un script de shell, que genera el archivo .env y ejecuta el script de Python simultáneamente.

Cree una secuencia de comandos de Shell que cargue el archivo .env en la secuencia de comandos de Python

Este proceso es el mismo que crear un archivo de entorno, ya que los comandos de Bash deben escribirse en la conversión EOL de Unix.

Abra un nuevo archivo en Notepad ++ y escriba comandos Bash como:

#!/usr/bin/env bash

set -a
source config.env
set +a

python test.py

La primera línea de código es un shebang, una secuencia de caracteres que generalmente debe indicarse en un script Bash. Aquí, muestra la ruta del archivo desde donde se accede a Bash.

El set -a permite que todas las variables se exporten al exterior en varios procesos secundarios. Aquí, ese proceso secundario es el script de Python que debe ejecutarse.

Es un atajo para la función de Unix allexport.

El archivo de entorno se agria o, en otras palabras, se carga en el script de shell utilizando la sintaxis source config.env. El -a permite exportar todas las variables dentro del archivo .env que ingresa al entorno.

El set +a funciona de manera opuesta al set -a y desactiva la exportación de variables para que ningún otro archivo o código se vea afectado.

La última línea de código inicia un proceso secundario utilizando la sintaxis python test.py. Ejecuta el script de Python dentro del entorno, lee archivos .env en Python y devuelve el resultado del script de Python.

Una vez que se escribe el código dentro del script de shell, su EOL debe convertirse a Unix y luego guardarse con una extensión .sh, como run.sh. Guarde el archivo en el mismo directorio donde se encuentran el archivo de entorno y los scripts de Python.

Cuando se ejecuta dentro de Bash, el comando árbol muestra los tres archivos dentro del mismo directorio.

jay@DESKTOP-8MEIQB8:/mnt/c/Users/Win 10/try$ tree
.
├── config.env
├── run.sh
└── test.py

Después de completar los pasos anteriores, es hora de ejecutar el script Bash.

Ejecute el script Bash usando un ejecutor de línea de comandos

Un corredor de línea de comandos como un símbolo del sistema o PowerShell ayuda a ejecutar el script Bash en Windows. Una mejor opción es instalar git-bash, que nos permite ejecutar Bash directamente desde cualquier directorio de Windows.

Esta sección explicará ambas formas.

Instale Bash en el símbolo del sistema o PowerShell

La función Subsistema de Windows para Linux o WSL debe estar activada para ejecutar Bash en Windows. Se puede encontrar dentro de la opción Activar o desactivar características de Windows.

Vaya al menú Inicio y busque esta opción en la barra de búsqueda. Al hacer clic en él, se abrirá una ventana emergente con una lista de opciones y casillas de verificación. Desplácese hacia abajo hasta que encuentre Subsistema de Windows para Linux y marque la casilla de verificación junto a él.

Una vez que WSL esté activado en Windows, vaya a la tienda de Microsoft e instale una distribución de Linux como Ubuntu. Una vez instalado, reinicie la computadora y Bash estará listo para usarse en el símbolo del sistema y PowerShell.

Para verificar si está correctamente instalado y funcionando, vaya al símbolo del sistema o PowerShell y escriba bash. El terminal cambiará a Bash.

Instalar Git-Bash

Una opción alternativa al método WSL es el método Git-Bash. Bash se puede descargar e instalar directamente en el sistema a través de Git.

Abra el instalador después de descargarlo. Elija un lugar de instalación preferido y deje todas las demás configuraciones como predeterminadas.

El instalador muestra múltiples ventanas con muchas configuraciones, así que haga clic en “Siguiente” repetidamente hasta que comience la instalación.

Ejecute el script de Shell

Inicie Bash en el directorio donde se almacenan los scripts de Python y shell. Si se usa Git-bash, vaya directamente al directorio, haga clic con el botón derecho y seleccione Git Bash aquí.

Si se usa PowerShell o el símbolo del sistema, el terminal Bash debe ejecutarse manualmente después de ir al directorio requerido. Una vez dentro del directorio, escribe el comando bash.

Dentro de Bash, el script de shell debe ejecutarse. El script de shell se llama run.sh en este ejemplo, por lo que el comando Bash para ejecutar un script de shell es:

./run.sh

Esto activará el entorno y ejecutará el script de Python dentro de él, y devolverá el resultado:

Win 10@DESKTOP-8MEIQB8 MINGW64 ~/try
$ ./run.sh
prod
5000

Conclusión

Este artículo explica varias formas de leer archivos .env en Python, extraer variables de entorno de un archivo .env y luego usarlo en scripts de Python. El lector debería poder crear fácilmente archivos .env y scripts de shell que vinculen códigos de Python y archivos .env.

Artículo relacionado - Python Environment