HOWTO · Python

Umgebungsvariable im Python-Skript festlegen

Umgebungsvariablen werden normalerweise manuell innerhalb eines Systems festgelegt, aber wir verwenden Python-Skripte, um mit Umgebungsvariablen zu interagieren.

Auf dieser Seite

Python stellt Umgebungsvariablen über das Mapping os.environ bereit. Lesen Sie einen Wert über seinen Schlüssel aus, durchlaufen Sie die verfügbaren Schlüssel oder teilen Sie PATH anhand des plattformspezifischen Trennzeichens in Einträge auf. Eine Zuweisung über das Mapping setzt oder ändert einen Wert für den laufenden Prozess.

Umgebungsvariablen in Python lesen

Verwenden Sie os.environ.get(), wenn ein Schlüssel fehlen könnte und Sie einen Ersatzwert angeben möchten. Ein Zugriff in eckigen Klammern, etwa os.environ["APP_MODE"], eignet sich, wenn der Schlüssel vorhanden sein soll; fehlt er, wird KeyError ausgelöst. Das Beispiel setzt vor dem Auslesen einen vorhersehbaren Wert und ist daher nicht von der geerbten Umgebung des jeweiligen Rechners abhängig.

import os

os.environ["APP_MODE"] = "development"
print(os.environ["APP_MODE"])

Um verfügbare Namen zu prüfen, durchlaufen Sie os.environ oder rufen Sie os.environ.items() auf, um auf Schlüssel und Werte zuzugreifen. Geben Sie das vollständige Mapping nicht in gemeinsam genutzten Protokollen aus, da es Zugangsdaten oder andere sensible Konfiguration enthalten kann. Für einen bestimmten Wert liefert os.environ.get("APP_MODE", "development") einen Ersatzwert zurück, wenn der Schlüssel nicht gesetzt ist.

PATH ist eine Umgebungsvariable mit einer Folge von Suchverzeichnissen. Das Trennzeichen hängt vom Betriebssystem ab. Teilen Sie den Wert deshalb mit os.pathsep auf, zum Beispiel mit os.environ.get("PATH", "").split(os.pathsep). Diese Einträge helfen einem Prozess, nach Befehlen zu suchen; sie zeigen weder jedes installierte Programm an noch garantieren sie den genauen Speicherort einer Datei.

Eine .env-Datei ist eine reine Textdatei. Python lädt sie nicht automatisch, und ein darin abgelegter Schlüssel ist dadurch allein nicht geschützt. Verwenden Sie bei Bedarf einen geeigneten Loader oder eine Bereitstellungskonfiguration und beschränken Sie den Zugriff auf die Datei separat.

Umgebungsvariablen in Python setzen

Verwenden Sie das Mapping os.environ, um eine Variable anzulegen oder ihren aktuellen Wert zu ersetzen. Umgebungswerte sind Zeichenfolgen. Wandeln Sie Zahlen oder andere Datentypen daher vor der Zuweisung in Text um. Die folgenden Abschnitte zeigen eine direkte Zuweisung und das Setzen eines Standardwerts, bei dem ein vorhandener Wert erhalten bleibt.

Eine Variable mit os.environ setzen oder ändern

Eine Zuweisung an os.environ["APP_MODE"] setzt den Wert; eine erneute Zuweisung an denselben Schlüssel ändert ihn. Dieses eigenständige Beispiel gibt den Wert nach der Aktualisierung aus:

import os

os.environ["APP_MODE"] = "development"
os.environ["APP_MODE"] = "production"
print(os.environ["APP_MODE"])

Das Mapping bildet die Umgebung des aktuellen Prozesses ab. Ein Wert, den das laufende Python-Programm setzt, kann auch an später gestartete Kindprozesse vererbt werden. Die übergeordnete Shell wird dadurch jedoch nicht geändert, und nach Programmende bleibt die Änderung nicht systemweit bestehen. Soll ein Wert bereits vor dem Start von Python verfügbar sein, setzen Sie ihn in der Shell, in der Dienstkonfiguration oder über einen anderen Starter.

Mit os.environ.setdefault einen Standardwert setzen

Rufen Sie os.environ.setdefault(key, default) auf, um den Standardwert nur dann hinzuzufügen, wenn der Schlüssel fehlt. Ist der Schlüssel bereits vorhanden, gibt setdefault seinen aktuellen Wert zurück und lässt ihn unverändert. Wenn Sie einen vorhandenen Wert ersetzen möchten, verwenden Sie eine Zuweisung.

import os

mode = os.environ.setdefault("APP_MODE", "development")
print(mode)

Das ist nützlich für optionale Einstellungen, die einen Ersatzwert benötigen, während Aufrufer, Shell oder Bereitstellungskonfiguration weiterhin einen Wert vorgeben können. Wie bei anderen Zuweisungen über os.environ gilt die Änderung für diesen Prozess und seine später gestarteten Kindprozesse.

Fazit

Lesen Sie Werte aus os.environ, verwenden Sie os.environ.setdefault, wenn ein Ersatzwert eine vorhandene Einstellung erhalten soll, und weisen Sie direkt zu, wenn Sie einen Wert ersetzen möchten. Änderungen durch Python gelten für den eigenen Prozess und die von ihm gestarteten Kindprozesse; sie bleiben weder in der übergeordneten Shell noch systemweit bestehen.