Comment accéder aux variables d'environnement à partir de Python?


4 Answers

Pour vérifier si la clé existe (renvoie True / False )

"HOME" in os.environ

ou (supprimé de python 3.x)

os.environ.has_key("HOME")

Vous pouvez également utiliser get() lors de l'impression de la clé; utile si vous voulez utiliser un défaut. (pour python 2.7.3)

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

/home/username/ est la valeur par défaut

Question

Je définis une variable d'environnement à laquelle je veux accéder dans mon application Python. Comment puis-je obtenir cette valeur?




Actualy peut être ceci:

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'



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.




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 sera peut-être utile pour votre deuxième question. Cependant, vous devriez le clarifier.




Si vous envisagez 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 en tant que 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)

NOTE: autoenv de autoenv est un outil recommandé pour faire des variables d'environnement spécifiques au projet, veuillez noter que ceux qui utilisent autoenv gardent le fichier .env privé (inaccessible au public)




Related