HOWTO · Python

Establecer variable de entorno en Python Script

Las variables de entorno generalmente se configuran manualmente dentro de un sistema, pero usaremos scripts de Python para interactuar con las variables de entorno.

En esta página

Python ofrece acceso a las variables de entorno mediante el mapeo os.environ. Puedes leer un valor a partir de su clave, recorrer las claves disponibles o dividir PATH en sus entradas específicas de cada plataforma. Asignar un valor en el mapeo lo establece o modifica para el proceso en ejecución.

Leer variables de entorno en Python

Usa os.environ.get() cuando una clave pueda faltar y quieras proporcionar un valor alternativo. La consulta con corchetes, como os.environ["APP_MODE"], es adecuada cuando se espera que la clave exista; si no existe, genera KeyError. El ejemplo establece un valor predecible antes de leerlo, por lo que no depende del entorno heredado de la máquina.

import os

os.environ["APP_MODE"] = "development"
print(os.environ["APP_MODE"])

Para consultar los nombres disponibles, recorre os.environ o llama a os.environ.items() para acceder a las claves y sus valores. Evita imprimir el mapeo completo en registros compartidos, ya que puede contener credenciales u otra configuración sensible. Para obtener un valor concreto, usa os.environ.get("APP_MODE", "development"); devolverá el valor alternativo si la clave no está definida.

PATH es una variable de entorno que contiene una secuencia de directorios de búsqueda. El separador depende del sistema operativo, así que puedes dividirla con os.pathsep; por ejemplo: os.environ.get("PATH", "").split(os.pathsep). Estas entradas ayudan a un proceso a buscar comandos, pero no identifican todos los programas instalados ni garantizan la ubicación exacta de un archivo.

Un archivo .env es texto sin formato. Python no lo carga automáticamente, y guardar allí una clave no protege por sí solo el secreto. Cuando sea necesario, usa un cargador adecuado o la configuración del entorno de despliegue, y protege el acceso al archivo por separado.

Establecer variables de entorno en Python

Usa el mapeo os.environ para crear una variable o reemplazar su valor actual. Los valores del entorno son cadenas, así que convierte los números y otros tipos a texto antes de asignarlos. En las secciones siguientes se muestra cómo asignar un valor directamente y cómo establecer un valor predeterminado que conserva uno existente.

Establecer o cambiar una variable con os.environ

Al asignar un valor a os.environ["APP_MODE"], lo estableces; si vuelves a asignar un valor a esa clave, lo cambias. Este ejemplo es autónomo e imprime el valor después de actualizarlo:

import os

os.environ["APP_MODE"] = "development"
os.environ["APP_MODE"] = "production"
print(os.environ["APP_MODE"])

El mapeo representa el entorno del proceso actual. Los procesos secundarios que se inicien después también pueden heredar un valor establecido por el programa Python en ejecución, pero este no modifica el intérprete de comandos padre ni permanece en el sistema cuando termina el programa. Para que un valor esté disponible antes de iniciar Python, establécelo en el intérprete de comandos, en la configuración del servicio o en otro programa de inicio.

Establecer un valor predeterminado con os.environ.setdefault

Llama a os.environ.setdefault(key, default) para añadir el valor predeterminado solo cuando la clave no existe. Si ya existe, setdefault devuelve su valor actual y lo deja sin cambios. Si quieres reemplazarlo, usa una asignación.

import os

mode = os.environ.setdefault("APP_MODE", "development")
print(mode)

Esto resulta útil para opciones que pueden necesitar un valor alternativo, pero que también permiten que quien llama al programa, el intérprete de comandos o la configuración del entorno de despliegue proporcionen uno. Como ocurre con las demás asignaciones mediante os.environ, el cambio se aplica a este proceso y a los procesos secundarios que inicie después.

Conclusión

Lee los valores desde os.environ, usa os.environ.setdefault cuando quieras establecer un valor alternativo sin reemplazar una configuración existente y asigna el valor directamente cuando quieras sustituirlo. Los cambios que realiza Python se limitan a su proceso y a los procesos secundarios que inicia; no persisten en el intérprete de comandos padre ni en el sistema.