Establezco una variable de entorno a la que quiero acceder en mi aplicación Python. ¿Cómo obtengo su valor?
Establezco una variable de entorno a la que quiero acceder en mi aplicación Python. ¿Cómo obtengo su valor?
Respuestas:
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 puede que necesites 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 desea averiguarlo mientras ejecuta Python, puede hacer lo siguiente:
import sys
print(sys.prefix)
.get()
También se le puede dar un valor predeterminado.
Para verificar si la clave existe (devuelve True
o False
)
'HOME' in os.environ
También puede usarlo get()
al imprimir la clave; útil si quieres usar un valor predeterminado.
print(os.environ.get('HOME', '/home/username/'))
donde /home/username/
es el predeterminado
"HOME" in os.environ
o os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Como puede ver primero, es mucho más fácil de leer y cómodo para trabajar.
La pregunta original (primera parte) era "cómo verificar las variables de entorno en Python".
Aquí le mostramos cómo verificar si $ FOO está configurado:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
bloque
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á que desarrollar su segundo punto un poco más antes de que sea posible una respuesta decente.
En realidad se puede hacer esto lejos:
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'
str.format
Es solo una adición elegante.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
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: autoenv de kennethreitz es una herramienta recomendada para hacer variables de entorno específicas del proyecto, tenga en cuenta que aquellos que lo estén utilizando autoenv
mantienen el .env
archivo privado (inaccesible al público)
También hay una serie de excelentes bibliotecas. Envs, por ejemplo, le permitirá analizar objetos fuera de las 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']
Para django ver ( https://github.com/joke2k/django-environ )
$ pip install django-environ
import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# False if not in os.environ
DEBUG = env('DEBUG')
# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
también puedes probar esto
Primero, instale python-decouple
pip install python-decouple
importalo en tu archivo
from decouple import config
Luego obtenga la variable env
SECRET_KEY=config('SECRET_KEY')
Lea más sobre la biblioteca de Python aquí