Wie das setzen von Umgebungsvariablen in Python
Ich müssen einige Umgebungsvariablen setzen in das python-Skript und ich möchte, dass alle anderen scripts, die aufgerufen werden, von python (shell-Skripte), wird child Prozess zu sehen, der die Umgebungsvariablen gesetzt werden. Der Wert ist eine Zahl.
Wenn ich os.environ["DEBUSSY"] = 1
es beschwert sich sagen, dass 1
werden string.
Ich möchte auch wissen, wie zu Lesen, die environment-Variablen in python (in den späteren Teil des Skriptes). sobald ich es einrichten.
InformationsquelleAutor prahallada | 2011-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umgebungsvariablen müssen strings sein, so verwenden Sie
Variablen
DEBUSSY
den string1
. Der Zugriff auf diese variable später verwenden Sie einfachKind-Prozesse Erben automatisch die Umgebung des übergeordneten Prozesses -- keine Besondere Aktion ihrerseits erforderlich ist.
Möglicherweise gibt es einige historische Varianten von Unix, die keine Unterstützung
putenv()
, aber für diejenigen, die Unixen gibt es nichts, was Sie sowieso tun. Sogar alte Versionen von AIX und HPUX ich arbeitete mit Tat unterstützen. Wenn jemand tatsächlich in der Lage, einen computer nicht unterstützt, es heute, ich habe schwere Zweifel, Sie werden in der Lage zu führen Sie Python auf dem computer. 🙂Achtung: zum Zitat von @Evan ' s-Verweis oben
ist die Aussage "Kind-Prozess automatisch Erben die Umgebung der Eltern-Prozess" gilt für die shell wie die bash.
Es ist wahr für alle Prozesse auf Unix-ähnlichen Betriebssystemen. Ich weiß nicht, über das andere Betriebssystem. Beachten Sie, dass shell-Variablen werden nicht gespeichert, in der Umgebung, sofern Sie Sie exportieren.
InformationsquelleAutor Sven Marnach
Müssen Sie prüfen, einige weitere Aspekte, die für die code Robustheit;
wenn Sie die Speicherung eines integer-valued variable als Umgebungsvariable, versuchen
dann für das retrieval berücksichtigen, dass, um Fehler zu vermeiden, sollten Sie versuchen,
ggf. ersetzen '-1' für 'Nicht Gesetzt'
so zu stellen, dass alle zusammen
Da es selten Sinn macht, zum speichern von -1 für eine fehlende integer. Eine bessere Wette wäre
myvar = int(os.environ.get('MYVAR')) if os.environ.get('MYVAR', '') != '' else None
– so wäre es Keine, wenn keine Nummer angegeben wurdeInformationsquelleAutor Mark
os.environ
verhält sich wie ein python-dictionary, so dass alle die common dictionary-Operationen ausgeführt werden können. Zusätzlich zu denget
undset
Vorgänge erwähnt in den anderen Antworten, wir können auch einfach überprüfen, ob ein Schlüssel vorhanden istPython 2
Python 3
Für python 3, Wörterbücher zu verwenden, die in - Schlüsselwort anstelle von has_key
Gibt es eine wichtige Sache zu beachten über die Verwendung
os.environ
:Obwohl Kind-Prozesse Erben die Umgebung der Eltern verarbeiten, ich hatte ein Problem vor kurzem und dachte sich, wenn Sie andere Skripte die Aktualisierung der Umgebung, während Sie Ihre python-Skript ausgeführt wird, ruft
os.environ
wieder wird, spiegeln nicht die neuesten Werte.Auszug aus der docs:
os.environ.data
speichert alle Variablen, ist ein dict-Objekt, das enthält alle Umwelt-Werte:os.environ.data
wurde umbenannt in Python 3.2 zuos.environ._data
, der Unterstrich-prefix zeigt, dass Sie sollten nicht Lesen Sie es direkt. Jedenfallsos.environ._data
nicht aktualisierte Werte sowieso.Yep, jetzt verstehe ich. Ich wollte meine erste überraschung mit anderen, die kommen suchen. Vielen Dank für den Hinweis auf das update der Variablen name seit 3.2, eine Aktualisierung der Antwort.
InformationsquelleAutor sisanared
Dann tun
Verwenden Sie einfach
os.environ["DEBUSSY"]
wie inInformationsquelleAutor Jim Brissom
Sollten Sie zuweisen string-Wert an die Umgebungsvariable.
os.environ["DEBUSSY"] = "1"
Wenn Sie möchten, Lesen oder drucken Sie die Umgebungsvariable verwenden Sie einfach
print os.environ["DEBUSSY"]
Diese änderungen werden wirksam, nur für den aktuellen Prozess, in dem es zugeordnet war, wird es nicht ändern Sie den Wert dauerhaft. Die Kind-Prozesse Erben automatisch die Umgebung des übergeordneten Prozesses.
Wenn ich verlassen der python-shell, und die os environmet zuvor gegangen ist.
InformationsquelleAutor RejeeshChandran
Was
os.environ["DEBUSSY"] = '1'
? Environment-Variablen sind immer strings.InformationsquelleAutor ThiefMaster
Können Sie die
os.environ
Wörterbuch Zugriff auf die Umgebungsvariablen.Nun, ein problem, das ich hatte, ist, dass, wenn ich versuchte, verwenden
os.system
zum ausführen einer batch-Datei, legt die Umgebungsvariablen mit SET-Befehl in eine **.bat* Datei), wäre es nicht richtig Sie für Ihre python-Umgebung (aber für den untergeordneten Prozess, der erstellt wird, mit deros.system
- Funktion). Tatsächlich erhalten die Variablen, die in der python-Umgebung, ich benutze dieses script:InformationsquelleAutor Ricardo Alejos
Beim spielen mit den environment-Variablen (hinzufügen/ändern/entfernen von Variablen), eine gute Praxis ist, um den vorherigen Zustand wiederherzustellen bei der Funktion Abschluss.
Müssen Sie möglicherweise so etwas wie die
modified_environ
Kontext-manager beschreiben in diesem Frage zur Wiederherstellung der Umgebungsvariablen.Classic Verwendung:
InformationsquelleAutor Laurent LAPORTE
to Set Variable:
Element Zuordnung-Methode mit der Taste:
zu bekommen oder um zu überprüfen, ob Ihr existiert oder nicht,
seit os.environ ist ein Beispiel, Sie können versuchen, die Objekt Weg.
Methode 1:
erhalten
'1'
als RückgabewertMethode 2:
Methode 3:
Methode 4:
InformationsquelleAutor Silent Spectator