Manipulation der Umgebungsvariablen durch Subprogramm

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Windsaer
User
Beiträge: 1
Registriert: Mittwoch 3. Juli 2019, 18:55

Hallo,

ich möchte in einem Pythonskript ein bash-File ausführen welches die Umgebungsvariablen manipuliert. Allerdings wird beim Ausführen mit os.system() bzw. subprocess.run() eine eigene Shell geöffnet. Die Umgebungsvariablen der Parent-shell ändern sich dadurch nicht.
Hat jemand eine Idee wie man die durch das bash-File geänderten Umgebungsvariablen auslesen kann, um sie auch im Pythonskript anzupassen?

Vielen Dank im Voraus

Windsaer
Sirius3
User
Beiträge: 18426
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutzeravatar
__blackjack__
User
Beiträge: 14433
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Windsaer: Das hat übrigens nichts mit Shells zu tun, denn `subprocess.run()` führt Dein Bash-Skript direkt aus, ohne noch einmal eine weitere Shell dazwischen zu schieben. Grundsätzlich kann man von einem Kindprozess die Umgebungsvariablen des Elternprozesses nicht ändern. Darum auch der Lösungsansatz von Sirius3 vom Elternprozess aus auf die Umgebungsvariablen vom Kindprozess zuzugreifen.
“Design patterns are kind of like sarcasm: hard to use well, not always appropriate,
and disgustingly bad when applied to problems they are not meant to solve.” — ajones in c.l.python
Antworten