J'ai défini une variable d'environnement à laquelle je veux accéder dans mon application Python. Comment puis-je obtenir sa valeur?
J'ai défini une variable d'environnement à laquelle je veux accéder dans mon application Python. Comment puis-je obtenir sa valeur?
Réponses:
Les variables d'environnement sont accessibles via os.environ
import os
print(os.environ['HOME'])
Ou vous pouvez voir une liste de toutes les variables d'environnement en utilisant:
os.environ
Comme parfois, vous pourriez avoir besoin de voir une liste complète!
# 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))
L'installation par défaut de Python sur Windows est C:\Python
. Si vous voulez découvrir tout en exécutant python, vous pouvez faire:
import sys
print(sys.prefix)
.get()
peut également recevoir une valeur par défaut.
Pour vérifier si la clé existe (retourne True
ou False
)
'HOME' in os.environ
Vous pouvez également utiliser get()
lors de l'impression de la clé; utile si vous souhaitez utiliser une valeur par défaut.
print(os.environ.get('HOME', '/home/username/'))
où /home/username/
est la valeur par défaut
"HOME" in os.environ
ou os.environ.get('HOME')
?
"HOME" in os.environ
vs os.environ.get('HOME') is None
. Comme vous pouvez le voir en premier, il est beaucoup plus lisible et confortable de travailler avec.
La question initiale (première partie) était «comment vérifier les variables d'environnement en Python».
Voici comment vérifier si $ FOO est défini:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
bloc
Vous pouvez accéder aux variables d'environnement à l'aide de
import os
print os.environ
Essayez de voir le contenu des variables d'environnement PYTHONPATH ou PYTHONHOME, cela sera peut-être utile pour votre deuxième question. Cependant, vous devez le clarifier.
Quant aux variables d'environnement:
import os
print os.environ["HOME"]
Je crains que vous ne deviez étoffer votre deuxième point un peu plus avant qu'une réponse décente ne soit possible.
En fait, cela peut être fait:
import os
for item, value in os.environ.items():
print('{}: {}'.format(item, value))
Ou simplement:
for i, j in os.environ.items():
print(i, j)
Pour afficher la valeur dans le paramètre:
print(os.environ['HOME'])
Ou:
print(os.environ.get('HOME')
Pour définir la valeur:
os.environ['HOME'] = '/new/value'
str.format
est juste un ajout de fantaisie.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Si vous prévoyez d'utiliser le code dans un code d'application web de production, en
utilisant n'importe quel framework web comme Django / Flask, utilisez des projets comme envparse , en l'utilisant, vous pouvez lire la valeur comme votre type défini.
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)
REMARQUE: autoenv de kennethreitz est un outil recommandé pour créer des variables d'environnement spécifiques au projet, veuillez noter que ceux qui utilisent autoenv
veuillez garder le .env
fichier privé (inaccessible au public)
Il existe également un certain nombre d'excellentes bibliothèques. Envs, par exemple, vous permettra d'analyser des objets de vos variables d'environnement, ce qui est rad. Par exemple:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Pour django voir ( 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')
Vous pouvez également essayer ceci
Tout d'abord, installez python-decouple
pip install python-decouple
l'importer dans votre fichier
from decouple import config
Ensuite, obtenez la variable env
SECRET_KEY=config('SECRET_KEY')
En savoir plus sur la bibliothèque python ici