¿Cómo acceder a los valores de las variables de entorno?

Establecí una variable de entorno a la que quiero acceder en mi aplicación Python. ¿Cómo consigo este valor?

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

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

O puede ver una lista de todas las variables de entorno usando:

 os.environ 

Como a veces es posible que necesite ver una lista completa!

 # using get will return `None` if a key is not present rather than raise a `KeyError` print(os.environ.get('KEY_THAT_MIGHT_EXIST')) # os.getenv is equivalent, and can also give a default value instead of `None` print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value)) 

La instalación predeterminada de Python en Windows es C:\Python . Si quieres descubrirlo mientras ejecutas python puedes hacerlo:

 import sys print(sys.prefix) 

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

 'HOME' in os.environ 

También puede usar get() al imprimir la clave; Útil si quieres usar un predeterminado.

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

donde /home/username/ es el predeterminado

La pregunta original (primera parte) era “cómo verificar las variables de entorno en Python”.

Aquí le indicamos cómo verificar si $ FOO está configurado:

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

Puede acceder a las variables de entorno utilizando

 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. Sin embargo debes aclararlo.

En cuanto a las variables de entorno:

 import os print os.environ["HOME"] 

Me temo que tendrías que completar tu segundo punto un poco más antes de que sea posible una respuesta decente.

 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.

Si planea usar el código en un código de aplicación web de producción,
usando cualquier marco web como Django / Flask, use proyectos como envparse , usándolo puede leer el valor como su tipo definido.

 from envparse import env # will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"] white_list = env.list("WHITE_LIST", default=[]) # Perfect for reading boolean DEBUG = env.bool("DEBUG", default=False) 

NOTA: kenethreitz’s autoenv es una herramienta recomendada para hacer variables de entorno específicas del proyecto, tenga en cuenta que aquellos que están usando autoenv mantienen el archivo .env privado (no disponible para el público)

En Python 3:

 #!/usr/bin/python3 import os for param in os.environ.keys(): print("%s: %s " % (param, os.environ[param])) 

Aquí hay una opción de una línea asumiendo que la importación se ha realizado:

 for key in os.environ: print(key,':',os.environ[key]) 

o con formato:

 for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key])) 

En realidad se puede hacer esto

 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' 

para os.environ.get :

 try: env_value = os.environ.get("key_maybe_not_exist") except KeyError: print("Not exist environment value for %s" % "key_maybe_not_exist") 

o:

 if "key_maybe_not_exist" in os.environ: existed_env_value = os.environ["key_maybe_not_exist"] 

para os.getenv :

 existed_env_value = os.getenv("key_maybe_not_exist") 

equivalente a:

 existed_env_value = os.getenv("key_maybe_not_exist", default=None) 

También hay una serie de grandes bibliotecas. Los Envs, por ejemplo, te permitirán analizar objetos fuera de tus variables de entorno, que es rad. Por ejemplo:

 from envs import env env('SECRET_KEY') # 'your_secret_key_here' env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']