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


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


1274
2018-02-05 13:03


origine


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))

Installation par défaut de Python sur Windows est C:\Python. Si vous voulez savoir quand vous utilisez Python, vous pouvez faire:

import sys
print(sys.prefix)

1944
2018-02-05 13:18



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 aussi 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 le défaut


130
2017-07-12 08:14



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)

33
2018-03-29 13:58



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.


21
2018-02-05 13:07



Comme pour les variables d'environnement:

import os
print os.environ["HOME"]

Je crains que vous deviez étoffer votre deuxième point un peu plus avant qu'une réponse décente soit possible.


13
2018-02-05 13:07



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.


9
2018-03-28 15:46



En Python 3:

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

6
2018-02-21 11:16



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 envparseEn 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)

REMARQUE: Kennethreitz autoenv est un outil recommandé pour faire des variables d'environnement spécifiques au projet, veuillez noter que ceux qui utilisent autoenv s'il vous plaît garder le .env fichier privé (inaccessible au public)


6
2018-01-10 04:12



Voici une option d'une ligne en supposant importer os a été fait:

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

ou avec le formatage:

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

1
2018-03-27 07:34