python ajouter - Comment définir les variables d'environnement en Python




4 Answers

Les variables d'environnement doivent être des chaînes, utilisez donc

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

pour définir la variable DEBUSSY sur la chaîne 1 . Pour accéder à cette variable plus tard, il suffit d'utiliser

print os.environ["DEBUSSY"]

Les processus enfants héritent automatiquement de l'environnement du processus parent - aucune action particulière de votre part n'est requise.

au path

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.




si je fais os.environ ["DEBUSSY"] = 1, il se plaint de dire que 1 doit être une chaîne.

Alors fais

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

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.

Il suffit d'utiliser os.environ["DEBUSSY"] , comme dans

some_value = os.environ["DEBUSSY"]



Qu'en est-il de os.environ["DEBUSSY"] = '1' ? Les variables d'environnement sont toujours des chaînes.




Vous pouvez utiliser le dictionnaire os.environ pour accéder à vos variables d'environnement.

Maintenant, un problème que j'avais, c'est que si j'essayais d'utiliser os.system pour exécuter un fichier batch qui définit vos variables d'environnement (en utilisant la commande SET dans un fichier ** .bat *), il ne les définirait pas vraiment pour votre environnement python (mais pour le processus enfant créé avec la fonction os.system ). Pour obtenir les variables dans l'environnement python, j'utilise ce script:

import re
import system
import os

def setEnvBat(batFilePath, verbose = False):
    SetEnvPattern = re.compile("set (\w+)(?:=)(.*)$", re.MULTILINE)
    SetEnvFile = open(batFilePath, "r")
    SetEnvText = SetEnvFile.read()
    SetEnvMatchList = re.findall(SetEnvPattern, SetEnvText)

    for SetEnvMatch in SetEnvMatchList:
        VarName=SetEnvMatch[0]
        VarValue=SetEnvMatch[1]
        if verbose:
            print "%s=%s"%(VarName,VarValue)
        os.environ[VarName]=VarValue



Related