1252 Stimmen

Wie setzt man Umgebungsvariablen in Python?

Ich muss einige Umgebungsvariablen im Python-Skript setzen und ich möchte, dass alle anderen Skripte, die von Python aus aufgerufen werden, die gesetzten Umgebungsvariablen sehen.

Wenn ich es tue,

os.environ["DEBUSSY"] = 1

beanstandet er, dass 1 muss eine Zeichenkette sein.

Ich möchte auch wissen, wie ich die Umgebungsvariablen in Python (im letzten Teil des Skripts) lesen kann, sobald ich sie gesetzt habe.

3 Stimmen

3voto

Es gibt eine gute, sofort einsatzbereite Python-Lösung namens pycrosskit . Es erstellt Umgebungsvariablen, die sowohl unter Linux als auch unter Windows bestehen bleiben.

Verwendung:

# Will Set Persistent Value for Variable in System
# * subkey works only for windows like file in folder
# * reg_path works only for windows as register path 
SysEnv.set_var(name, value, subkey, reg_path=default_reg_path)

# Will Get Persistent Value for Variable in System
# * reg_path works only for windows as register path
# * delete, deletes key from environment and its subkeys after read
SysEnv.get_var(name, reg_path=default_reg_path, delete=False)

3voto

Lucas Punkte 9130

Späte Antwort, die jemandem helfen könnte, schnell und ohne Codeänderungen zu testen. Führen Sie einfach Ihre Anwendung mit der Umgebungsvariable als so angehängt:

 $ DEBUSSY=1 python3 api.py

Sie können env vars auf diese Weise an jedes Skript übergeben.

2voto

Andrea Punkte 3759

Wenn Sie mit Flask und Unittest zu kämpfen haben, denken Sie bitte daran, dass, wenn Sie eine Variable außerhalb einer Methode setzen, diese Variable beim Importieren der Anwendung gelesen wird. Das mag trivial erscheinen, könnte aber jemandem Kopfschmerzen ersparen.

Zum Beispiel, wenn Sie in Ihrem Flask Unittest:

  1. die Anwendung importieren
  2. setzen Sie die Umgebungsvariable in der Datei setUp Methode.
  3. verwenden. app.test_client() um Ihre Anwendung zu testen

Die im zweiten Schritt eingegebene Variable wird im dritten Schritt nicht mehr angezeigt, da sie bereits im ersten Schritt gelesen wurde.

1voto

LaptopProfile Punkte 25

Die Umgebung wird für den Code selbst eingefroren (nicht für untergeordnete Prozesse) und kann nicht programmatisch bearbeitet werden.

Eine gute Lösung, unabhängig von der Plattform, ist es, den Aufruf von Python in eine Batch-Datei zu verpacken. Wenn ich zum Beispiel unter Linux arbeite, könnte die Batch-Datei wie folgt aussehen

export "DEBUSSY"="1"
python mycode.py

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