Wenn Sie versuchen, die Umgebungsvariable auf eine Bash-Auswertung zu setzen, ist zu beachten, dass wird nicht speichern, was Sie erwarten. Beispiel:
from os import environ
environ["JAVA_HOME"] = "$(/usr/libexec/java_home)"
Dies wird nicht wie in einer Shell ausgewertet, so dass anstelle von /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
als Pfad eingeben, erhalten Sie den wörtlichen Ausdruck $(/usr/libexec/java_home)
.
Stellen Sie sicher, dass Sie sie vor dem Setzen der Umgebungsvariablen auswerten, etwa so:
from os import environ
from subprocess import Popen, PIPE
bash_variable = "$(/usr/libexec/java_home)"
capture = Popen(f"echo {bash_variable}", stdout=PIPE, shell=True)
std_out, std_err = capture.communicate()
return_code = capture.returncode
if return_code == 0:
evaluated_env = std_out.decode().strip()
environ["JAVA_HOME"] = evaluated_env
else:
print(f"Error: Unable to find environment variable {bash_variable}")
3 Stimmen
Verwandt: Wie kann ich von Python aus auf Umgebungsvariablen zugreifen?