web-dev-qa-db-fra.com

Comment accéder aux valeurs des variables d'environnement?

J'ai défini une variable d'environnement à laquelle je souhaite accéder dans mon application Python. Comment puis-je obtenir cette valeur?

1760
Amit Yadav

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

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

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

197
lgriffiths

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)
46
Scott C Wilson

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.

35
andrei1089

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.

23
Jim Brissom
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.

20
Azorian

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'
13
britodfbr

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

13
I Am Batman

Dans Python 3:

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

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]))
8
pudepied

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']
5
Peter Konneker

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