Ich habe eine komplexe Software, die ich nicht posten kann, noch habe ich ein konkretes Arbeitsbeispiel. Ich werde versuchen, das Problem zu erklären, vielleicht ist mir jemand schon einmal begegnet.os.getenv gibt keine zurück, stattdessen korrekter Wert
Auf der Linux-Shell ich eine Umgebungsvariable definiert haben:
> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711
Innerhalb des Komplexes Code, den ich mit dieser Variablen erhalten, wollen
print os.getenv('MY_TEST_ENV')
die immer None
zurückgibt. Wenn ich ein Testskript zum Testen dieses Verhaltens selbst mit Klassen in verschiedenen Dateien erzeuge, bekomme ich immer das gewünschte Verhalten (d. H. os.getenv('MY_TEST_ENV')
gibt den korrekten Wert 4711
zurück).
Der Code wird als 'sudo' gestartet.
Irgendwelche Ideen, was könnte der Grund sein?
Wie läuft dieser "komplexe Code"? – geoffspear
Sind die restlichen Umgebungsvariablen noch vorhanden? Wie wird der Python-Prozess gestartet? Wenn Sie einen Prozess mit dem Systemaufruf 'execve' starten und die Umgebungsvariable _not_ nicht ausfüllen, wird die Umgebung des untergeordneten Objekts auf Null gesetzt. – alexis
Ich wusste, die Lösung für mein Problem ist trivial - weil ich den Python-Prozess als Sudo ausführen! Aber ich habe diese Lösung erst gesehen, als ich gefragt wurde, wie ich den Code ausführen soll. Ohne Sudo sehe ich die Variable (aber der Rest des Codes wird nicht funktionieren). – Alex