Wenn Sie rückwärts Ausbreitung der Umwelt sagen, tut mir leid, können Sie nicht. Es ist ein Sicherheitsproblem. Die direkte Quellenumgebung von Python ist jedoch definitiv gültig. Aber es ist mehr oder weniger ein manueller Prozess.
import subprocess as sp
SOURCE = 'your_file_path'
proc = sp.Popen(['bash', '-c', 'source {} && env'.format(SOURCE)], stdout=sp.PIPE)
source_env = {tup[0].strip(): tup[1].strip() for tup in map(lambda s: s.strip().split('=', 1), proc.stdout)}
Dann haben Sie alles, was Sie brauchen in source_env
.
Wenn Sie es zurück zu Ihrer lokalen Umgebung schreiben müssen (was nicht zu empfehlen ist, da source_env
Sie sauber hält):
import os
for k, v in source_env.items():
os.environ[k] = v
Eine weitere kleine Aufmerksamkeit hier bezahlt werden muss, da ich ist genannt bash
Hier sollten Sie erwarten, dass die Regeln auch hier angewendet werden. Wenn Sie also Ihre Variable sehen wollen, müssen Sie sie exportieren.
export VAR1='see me'
VAR2='but not me'
Was meinst du? Meinst du, wie * setzen * Umgebungsvariablen? – jonrsharpe
Ich möchte 'Quelle myFile.sh' aus dem Python-Skript aufrufen und dann auf die Variablen zugreifen – lafferc
Sie möchten nur wissen, wie Sie einen Befehl von Python ausführen? Hast du versucht nach * dem * zu suchen? * "Umgebungsvariablen laden" * scheint ** völlig nebensächlich ** zu dem, was Sie erreichen wollen. – jonrsharpe