J'ai défini une variable d'environnement à laquelle je souhaite accéder dans mon application Python. Comment puis-je obtenir cette valeur?
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))
installation par défaut de Python sous Windows est C:\Python
. Si vous voulez savoir en exécutant python, vous pouvez faire:
import sys
print(sys.prefix)
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 voulez utiliser un défaut.
print(os.environ.get('HOME', '/home/username/'))
où /home/username/
est la valeur par défaut
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)
Vous pouvez accéder aux variables d’environnement en utilisant
import os
print os.environ
Essayez de voir le contenu des variables d’environnement PYTHONPATH ou PYTHONHOME, cela vous aidera peut-être à répondre à votre deuxième question. Cependant, vous devriez le clarifier.
En ce qui concerne les variables d'environnement:
import os
print os.environ["HOME"]
J'ai bien peur que vous deviez préciser davantage votre deuxième point avant qu'une réponse décente ne soit possible.
import os
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
Cela imprimera toutes les variables d'environnement avec leurs valeurs.
En fait, cela peut être fait de suite:
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 voir 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'
Si vous envisagez d’utiliser le code dans une application Web de production,
utilisant un framework web tel que Django/Flask, utilisez des projets tels que envparse , utilisez-le pour lire la valeur sous le type que vous avez 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: L'outil 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
conservent le fichier .env
privé (inaccessible au public).
Dans Python 3:
#!/usr/bin/python3
import os
for param in os.environ.keys():
print("%s: %s " % (param, os.environ[param]))
Voici une option sur une ligne supposant que import os a été fait:
for key in os.environ: print(key,':',os.environ[key])
ou avec formatage:
for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key]))
Il y a aussi un certain nombre d'excellentes bibliothèques. Envs par exemple vous permettra d’analyser des objets dans 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 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")
ou:
if "key_maybe_not_exist" in os.environ:
existed_env_value = os.environ["key_maybe_not_exist"]
pour os.getenv
:
existed_env_value = os.getenv("key_maybe_not_exist")
équivalent à:
existed_env_value = os.getenv("key_maybe_not_exist", default=None)