Comment définir les variables d'environnement en Python


Answers

Vous devrez peut-être envisager d'autres aspects pour la robustesse du code;

Lorsque vous stockez une variable à valeurs entières en tant que variable d'environnement, essayez

os.environ['DEBUSSY'] = str(myintvariable)

alors pour la récupération, considérez que pour éviter les erreurs, vous devriez essayer

os.environ.get('DEBUSSY', 'Not Set')

peut remplacer "-1" pour "Non défini"

alors, pour mettre tout cela ensemble

myintvariable = 1
os.environ['DEBUSSY'] = str(myintvariable)
strauss = int(os.environ.get('STRAUSS', '-1'))
# NB KeyError <=> strauss = os.environ['STRAUSS']
debussy = int(os.environ.get('DEBUSSY', '-1'))

print "%s %u, %s %u" % ('Strauss', strauss, 'Debussy', debussy)
Question

J'ai besoin de définir des variables d'environnement dans le script python et je veux tous les autres scripts qui sont appelés à partir de python (scripts shell) qui seront des processus fils pour voir les variables d'environnement définies. La valeur est un nombre.

Si je fais os.environ["DEBUSSY"] = 1 , il se plaint de dire que 1 doit être une chaîne. Je veux aussi savoir comment lire les variables d'environnement dans python (dans la dernière partie du script) une fois que je l'ai défini.




Vous devez affecter une valeur de chaîne à la variable d'environnement.

os.environ["DEBUSSY"] = "1"

Si vous voulez lire ou imprimer la variable d'environnement, utilisez simplement

print os.environ["DEBUSSY"]

Ces modifications ne seront efficaces que pour le processus en cours où il a été assigné, il ne changera pas la valeur de façon permanente. Les processus enfants héritent automatiquement de l'environnement du processus parent.




Lorsque vous jouez avec des variables d'environnement (ajouter / modifier / supprimer des variables), il est recommandé de restaurer l'état précédent à la fin de la fonction.

Vous pouvez avoir besoin de quelque chose comme le gestionnaire de contextes modified_environ décrit dans cette question pour restaurer les variables d'environnement.

Usage classique:

with modified_environ(DEBUSSY="1"):
    call_my_function()



os.environ se comporte comme un dictionnaire python, donc toutes les opérations de dictionnaire courantes peuvent être effectuées. En plus des opérations get et set mentionnées dans les autres réponses, nous pouvons simplement vérifier si une clé existe:

>>> import os
>>> os.environ.has_key('HOME')  # Check an existing env. variable
True
>>> os.environ.has_key('FOO')   # Check for a non existing variable
False
>>> os.environ['FOO'] = '1'     # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO')       # Retrieve the value
'1'

J'avais récemment rencontré un problème et je me suis os.environ compte que si d'autres scripts os.environ à jour l'environnement pendant l'exécution de votre script python, appeler à nouveau os.environ ne refléterait pas les dernières valeurs .

Extrait des docs.python.org/2/library/os.html#os.environ :

Ce mappage est capturé la première fois que le module os est importé, généralement lors du démarrage de Python dans le cadre du traitement de site.py. Les modifications apportées à l'environnement après cette date ne sont pas reflétées dans os.environ, à l'exception des modifications apportées en modifiant directement os.environ.

os.environ.data qui stocke toutes les variables d'environnement, est un objet dict, qui contient toutes les valeurs d'environnement:

>>> type(os.environ.data)
<type 'dict'>



Related