¿Cómo puedo acceder a las variables de entorno en Python?

4 minutos de lectura

Avatar de usuario de Amit Yadav
amit yadav

¿Cómo puedo obtener el valor de una variable de entorno en Python?

Avatar de usuario de Rod
Varilla

Se accede a las variables de entorno a través de os.environ:

import os
print(os.environ['HOME'])

Para ver una lista de todas las variables de entorno:

print(os.environ)

Si no hay una clave presente, intentar acceder a ella generará una KeyError. Para evitar esto:

# Returns `None` if the key doesn't exist
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# Returns `default_value` if the key doesn't exist
print(os.environ.get('KEY_THAT_MIGHT_EXIST', default_value))

# Returns `default_value` if the key doesn't exist
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

  • hola rod, gracias por tu efectiva respuesta sobre la ‘instalación predeterminada’; efectivo en el punto de vista para entenderlo rápidamente en lugar de ir a través de los enlaces. Eso es realmente lo aprecio 🙂 pero sobre mi (1) pregunta, mire el comando y el fragmento de salida a continuación: >>> import os >>> print os.environ[‘PYTHONPATH’] Rastreo (última llamada más reciente): Archivo ““, línea 1, en Archivo “C:\Python25\lib\os.py”, línea 435, en obtiene el objeto devolver auto.datos[key.upper()] KeyError: ‘PYTHONPATH’ >>> print os.environ.get(‘PYTHONPATH’) Ninguno >>> // PLZ continuará…//

    – Amit Yadav

    5 de febrero de 2011 a las 14:47


  • En la primera forma, el script arroja una excepción, mientras que en la segunda, no da ninguna. Entonces, ¿hay alguna forma de obtener un valor significativo o lo estoy haciendo de manera incorrecta? Amit.

    – Amit Yadav

    5 de febrero de 2011 a las 14:49

  • os.environ es un diccionario. Intentar acceder a una clave que no está presente en el diccionario generará un KeyError. El método get simplemente devuelve Ninguno cuando la clave no existe. ¿Tienes PYTHONPATH configurado? ¿Puedes probar con una variable como PATH, que está garantizado que existe? ¿Devuelve un valor significativo?

    – Varilla

    5 de febrero de 2011 a las 19:21

  • PYTHONPATH se usa para agregar una nueva ruta de búsqueda a Python (sys.path) desde fuera de Python. Mira esto docs.python.org/using/cmdline.html#environment-variables

    – Varilla

    7 de febrero de 2011 a las 14:41

  • .get() también se le puede dar un valor predeterminado.

    – Gringo Suave

    21/09/2018 a las 15:25

avatar de usuario de lgriffiths
lgriffiths

Para comprobar si existe la clave (devuelve True o False)

'HOME' in os.environ

También puedes usar get() al imprimir la clave; útil si desea utilizar un valor predeterminado.

print(os.environ.get('HOME', '/home/username/'))

dónde /home/username/ es el predeterminado

  • Cual es mejor, "HOME" in os.environ o os.environ.get('HOME')?

    – endolito

    3 de febrero de 2017 a las 16:11

  • @endolith Hacen cosas diferentes. El primero devuelve Verdadero o Falso, mientras que el segundo devuelve un valor, posiblemente Ninguno.

    – Trentón

    13 de febrero de 2018 a las 22:38

  • @endolith, la pregunta correcta sería "HOME" in os.environ contra os.environ.get('HOME') is None. Como puede ver, primero es mucho más legible y cómodo para trabajar.

    – Konstantin Sekeresh

    16 oct 2019 a las 13:43

avatar de usuario de britodfbr
britodfbr

En realidad se puede hacer de esta manera:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

O simplemente:

for i, j in os.environ.items():
    print(i, j)

Para ver el valor en el parámetro:

print(os.environ['HOME'])

O:

print(os.environ.get('HOME'))

Para establecer el valor:

os.environ['HOME'] = '/new/value'

  • No, esta respuesta realmente no agrega nada además de las respuestas existentes

    – Bart

    2 de mayo de 2018 a las 10:06

  • Esto debería eliminarse, es un duplicado de otras respuestas. str.format es solo una adición elegante.

    – miike3459

    21 de abril de 2019 a las 16:46

  • >>> import os, pprint; pprint.pprint(list(os.environ.items()))

    – noobninja

    10 mayo 2020 a las 18:41

  • La primera respuesta con salida legible para todo el entorno, gracias. Para ver el env en el depurador de PyCharm, evalúo {k: v for k,v in sorted(os.environ.items())}

    – Noúmeno

    4 de agosto de 2021 a las 22:55

  • agrega cómo establecer el valor

    – MC

    26 de noviembre de 2021 a las 10:21

Avatar de usuario de Scott C Wilson
scott c wilson

Aquí se explica cómo comprobar si $FOO Está establecido:

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

avatar de usuario de andrei1089
andrei1089

Puede acceder a las variables de entorno usando

import os
print os.environ

Intente ver el contenido de las variables de entorno PYTHONPATH o PYTHONHOME. Tal vez esto sea útil para su segunda pregunta.

Avatar de usuario de Peter Mortensen
Pedro Mortensen

En cuanto a las variables de entorno:

import os
print os.environ["HOME"]

avatar de usuario de erik.weathers
erik.weather

import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

Eso imprimirá todas las variables de entorno junto con sus valores.

¿Ha sido útil esta solución?