Saltar al contenido

Variables de Entorno

Consejo

Si ya sabes qué son las "variables de entorno" y cómo usarlas, siéntete libre de saltar esto.

Una variable de entorno (también conocida como "env var") es una variable que vive fuera del código Python, en el sistema operativo, y puede ser leída por tu código Python (o por otros programas también).

Las variables de entorno pueden ser útiles para manejar la configuración de la aplicación, como parte de la instalación de Python, etc.

Crear y Usar Variables de Entorno

Puedes crear y usar variables de entorno en el shell (terminal), sin necesidad de Python:

fast →export MY_NAME="Wade Wilson"
echo "Hello $MY_NAME"
Hello Wade Wilson

restart ↻
fast →💬 Create an env var MY_NAME$Env:MY_NAME = "Wade Wilson"
💬 Use it with other programs, likeecho "Hello $Env:MY_NAME"
Hello Wade Wilson

restart ↻

Leer variables de entorno en Python

También podrías crear variables de entorno fuera de Python, en la terminal (o con cualquier otro método), y luego leerlas en Python.

Por ejemplo podrías tener un archivo main.py con:

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

Consejo

El segundo argumento de os.getenv() es el valor por defecto a retornar.

Si no se proporciona, por defecto es None, aquí proporcionamos "World" como el valor por defecto a usar.

Luego podrías llamar a ese programa de Python:

fast →python main.py

Hello World from Python

export MY_NAME="Wade Wilson"
python main.py

Hello Wade Wilson from Python

restart ↻
fast →💬 Here we don't set the env var yetpython main.py
💬 As we didn't set the env var, we get the default value
Hello World from Python

💬 But if we create an environment variable first$Env:MY_NAME = "Wade Wilson"
💬 And then call the program againpython main.py
💬 Now it can read the environment variable
Hello Wade Wilson from Python

restart ↻

Como las variables de entorno se pueden configurar fuera del código, pero pueden ser leídas por el código, y no tienen que almacenarse (confirmarse en git) con el resto de los archivos, es común usarlas para configuraciones o ajustes.

También puedes crear una variable de entorno solo para una invocación específica de un programa, que solo está disponible para ese programa, y solo durante su ejecución.

Para hacer eso, créala justo antes del programa en sí, en la misma línea:

fast →MY_NAME="Wade Wilson" python main.py

Hello Wade Wilson from Python

python main.py
Hello World from Python

restart ↻

Consejo

Puedes leer más sobre esto en The Twelve-Factor App: Config.

Tipos y Validación

Estas variables de entorno solo pueden manejar cadenas de texto, ya que son externas a Python y tienen que ser compatibles con otros programas y el resto del sistema (e incluso con diferentes sistemas operativos, como Linux, Windows y macOS).

Eso significa que cualquier valor leído en Python desde una variable de entorno será un str, y cualquier conversión a un tipo diferente o cualquier validación tiene que hacerse en el código.

Aprenderás más sobre el uso de variables de entorno para manejar la configuración de la aplicación en la Guía de Usuario Avanzada - Configuración y Variables de Entorno.

Variable de Entorno PATH

Hay una variable de entorno especial llamada PATH que es usada por los sistemas operativos (Linux, macOS, Windows) para encontrar programas a ejecutar.

El valor de la variable PATH es una cadena larga compuesta de directorios separados por dos puntos : en Linux y macOS, y por punto y coma ; en Windows.

Por ejemplo, la variable de entorno PATH podría verse así:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Esto significa que el sistema debería buscar programas en los directorios:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

Esto significa que el sistema debería buscar programas en los directorios:

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

Cuando escribes un comando en la terminal, el sistema operativo busca el programa en cada uno de esos directorios listados en la variable de entorno PATH.

Por ejemplo, cuando escribes python en la terminal, el sistema operativo busca un programa llamado python en el primer directorio de esa lista.

Si lo encuentra, entonces lo usará. De lo contrario, sigue buscando en los otros directorios.

Instalar Python y Actualizar el PATH

Cuando instalas Python, podría preguntársete si quieres actualizar la variable de entorno PATH.

Digamos que instalas Python y termina en un directorio /opt/custompython/bin.

Si dices que sí a actualizar la variable de entorno PATH, entonces el instalador agregará /opt/custompython/bin a la variable de entorno PATH.

Podría verse así:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

De esta manera, cuando escribes python en la terminal, el sistema encontrará el programa Python en /opt/custompython/bin (el último directorio) y usará ese.

Digamos que instalas Python y termina en un directorio C:\opt\custompython\bin.

Si dices que sí a actualizar la variable de entorno PATH, entonces el instalador agregará C:\opt\custompython\bin a la variable de entorno PATH.

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

De esta manera, cuando escribes python en la terminal, el sistema encontrará el programa Python en C:\opt\custompython\bin (el último directorio) y usará ese.

Así que, si escribes:

El sistema encontrará el programa python en /opt/custompython/bin y lo ejecutará.

Sería más o menos equivalente a escribir:

fast →/opt/custompython/bin/python
restart ↻

El sistema encontrará el programa python en C:\opt\custompython\bin\python y lo ejecutará.

Sería más o menos equivalente a escribir:

fast →C:\opt\custompython\bin\python
restart ↻

Esta información será útil al aprender sobre Entornos Virtuales.

Conclusión

Con esto deberías tener una comprensión básica de qué son las variables de entorno y cómo usarlas en Python.

También puedes leer más sobre ellas en la Wikipedia para Variables de Entorno.

En muchos casos no es muy obvio cómo las variables de entorno serían útiles y aplicables de inmediato. Pero siguen apareciendo en muchos escenarios diferentes cuando estás desarrollando, así que es bueno saber sobre ellas.

Por ejemplo, necesitarás esta información en la próxima sección, sobre Entornos Virtuales.