26 Stimmen

Wie erhält man die Umgebung von einem Unterprozess?

Ich möchte einen Prozess über ein Python-Programm aufrufen, aber dieser Prozess benötigt einige spezifische Umgebungsvariablen, die von einem anderen Prozess gesetzt werden. Wie kann ich die Umgebungsvariablen des ersten Prozesses erhalten, um sie an den zweiten zu übergeben?

So sieht das Programm aus:

import subprocess

subprocess.call(['proc1']) # this set env. variables for proc2
subprocess.call(['proc2']) # this must have env. variables set by proc1 to work

aber die beiden Prozesse haben nicht dieselbe Umgebung. Beachten Sie, dass diese Programme nicht von mir sind (das erste ist eine große und hässliche .bat-Datei und das zweite eine proprietäre Software), so dass ich sie nicht ändern kann (ok, ich kann alles, was ich brauche, aus der .bat-Datei extrahieren, aber es ist sehr umständlich).

N.B.: Ich benutze Windows, aber ich bevorzuge eine plattformübergreifende Lösung (aber mein Problem würde nicht auf einem Unix-ähnlichen System auftreten ...)

0voto

David Z Punkte 121773

Da fallen mir zwei Dinge ein: (1) die Prozesse müssen sich dieselbe Umgebung teilen, indem man sie irgendwie zu einem Prozess zusammenfasst, oder (2) der erste Prozess muss eine Ausgabe erzeugen, die die relevanten Umgebungsvariablen enthält, so dass Python sie lesen und die Umgebung für den zweiten Prozess erstellen kann. Ich glaube (obwohl ich mir nicht 100%ig sicher bin), dass es keine Möglichkeit gibt, die Umgebung von einem Unterprozess zu erhalten, wie Sie es sich erhoffen.

-1voto

William Pursell Punkte 188248

Die Umgebung wird vom übergeordneten Prozess geerbt. Legen Sie die Umgebung, die Sie benötigen, im Hauptskript fest, nicht in einem Unterprozess (Kindprozess).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X