Cómo gestionar variables de entorno en Python: Guía completa con ejemplos prácticos

1. Introducción

Python puede manejar variables de entorno para configurar dinámicamente parámetros dentro de un programa. Estas variables contienen información que el sistema o la aplicación consulta en tiempo de ejecución, como el nombre de usuario, rutas de archivos o la configuración regional. En este artículo, veremos cómo manipular variables de entorno en Python, cómo gestionarlas según el entorno y ejemplos prácticos de su uso.

2. ¿Qué son las variables de entorno?

2.1 Definición de variables de entorno

Las variables de entorno son información de configuración que los sistemas operativos o aplicaciones consultan al ejecutar programas. Por ejemplo, la ruta predeterminada de archivos, el directorio de inicio del usuario o la configuración del idioma se guardan como variables de entorno en el sistema. Al utilizarlas, los programas pueden controlar su funcionamiento de forma adecuada.

2.2 Importancia de las variables de entorno en Python

En Python, usar variables de entorno permite reducir dependencias del sistema y riesgos de seguridad. Datos sensibles como claves API o credenciales de base de datos no deberían escribirse directamente en el código. Usar variables de entorno permite gestionarlos sin exponer información confidencial en el programa.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Obtener y definir variables de entorno en Python

3.1 Obtener variables de entorno

Para obtener variables de entorno en Python, se utiliza el módulo os. Con las funciones os.getenv() o os.environ.get() se accede a los valores. Ambas aceptan una clave como argumento y devuelven el valor correspondiente. Si no existe, retornan None, lo que permite un manejo seguro en el programa.
import os
print(os.getenv('HOME'))  # Obtener el directorio home del usuario
os.environ maneja las variables como un diccionario. Con os.environ['HOME'] se obtiene un valor, pero si la clave no existe se lanza un KeyError. Por eso, get() resulta más flexible.
import os
print(os.environ.get('HOME'))  # Obtener home sin error si no existe

3.2 Definir y añadir variables de entorno

También se puede definir o añadir variables con os.environ. Los valores se guardan como cadenas, por lo que otros tipos deben convertirse antes.
import os
os.environ['NEW_VARIABLE'] = 'New Value'
print(os.environ['NEW_VARIABLE'])  # Imprime 'New Value'
Estas variables solo existen durante la ejecución del programa y no afectan al sistema. Si ya existe una con el mismo nombre, su valor será sobrescrito.

4. Optimización de la configuración con variables de entorno

4.1 Uso de python-dotenv

En proyectos grandes es común gestionar la configuración mediante variables de entorno. Con la librería python-dotenv se pueden definir en un archivo .env y cargarlas fácilmente en el proyecto. Ejemplo de archivo .env:
DATABASE_URL=postgres://user:password@localhost:5432/dbname
SECRET_KEY=mysecretkey
Uso en el programa:
from dotenv import load_dotenv
import os

load_dotenv()  # Cargar archivo .env
print(os.getenv('DATABASE_URL'))  # Muestra la URL de la base de datos
Este método resulta útil para alternar configuraciones en desarrollo, pruebas o producción. Permite gestionar credenciales sin incluirlas en el código fuente.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Eliminar y modificar variables de entorno

5.1 Eliminar variables de entorno

Para eliminar una variable se usa del o os.environ.pop(). del la elimina por completo, mientras que pop() devuelve el valor y la borra.
import os
os.environ['TEST'] = 'testing'
del os.environ['TEST']  # Elimina la variable 'TEST'
Ejemplo con pop():
import os
os.environ['TEST'] = 'testing'
print(os.environ.pop('TEST'))  # Imprime 'testing' y elimina la variable
Tras eliminar, la variable deja de estar disponible. Es importante manejar el caso cuando no existe.

6. Variables de entorno por proyecto

6.1 Gestión según el entorno

En diferentes fases (desarrollo, pruebas, producción) se requieren configuraciones distintas. Las variables de entorno permiten gestionarlas de forma eficiente. Ejemplo:
import os

if os.getenv('PHASE') == 'development':
    print('Modo desarrollo')
elif os.getenv('PHASE') == 'production':
    print('Modo producción')
Así, la variable PHASE define la configuración según el entorno.

7. Ejemplos prácticos: cambiar idioma o fase

7.1 Cambio de idioma

También sirven para cambiar idioma. Ejemplo usando LANG:
import os

if os.getenv('LANG') == 'ja_JP.UTF-8':
    print('こんにちは!')
else:
    print('Hello!')

7.2 Cambio de fase según entorno

Se puede alternar procesos según la fase del proyecto:
import os

phase = os.getenv('PHASE', 'development')

if phase == 'development':
    print('Usando configuración de desarrollo')
elif phase == 'production':
    print('Usando configuración de producción')
De esta forma, se optimiza la ejecución adaptándola al entorno.

8. Conclusión

El uso de variables de entorno en Python es clave para mejorar la seguridad y flexibilidad de los proyectos. Permite separar configuraciones por entorno y manejar credenciales sin exponerlas en el código. Aprovecha el módulo os y python-dotenv para construir aplicaciones seguras y eficientes.