Warum entfernt JMP JSL /usr/local/bin (und andere Pfade) aus Python os.environ['PATH'] unter MacOS?Problemerklärung:
-- Unter Mac OS entfernt JSL beim Starten des Python-Interpreters /use/local/bin und andere Pfade aus os.environ['PATH']
So reproduzieren Sie dieses Problem:
-- Für die folgenden Python-Codes
import os
print(os.environ)
-- Wenn die Codes im Mac OS Terminal ausgeführt werden, sind die Ergebnisse die folgenden:
(Hinweis: Unten wird nur das Element „PATH“ angezeigt. Andere irrelevante Elemente werden nicht angezeigt.)
environ({ 'PATH':'/usr/local/sbin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin:/opt/X11/bin'})-- Wenn die Codes in JSL ausgeführt werden (siehe JSL-Codes unten)
Python Init();
python_codes =
"<BR />import os
print(os.environ)
";
Python Init();
Python Submit (python_codes);
Python Term();
Die Ergebnisse werden
environ({ 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'})Frage:
- Warum entfernt JMP/JSL diese Pfade?
- Gibt es eine Möglichkeit, JMP/JSL dazu zu bringen, die Pfadeinstellungen der Shell zu berücksichtigen, ohne die „PATH“-Einstellungen in JSL-Python-Codes manuell zu ändern?
Automatisierung und SkriptingmacOSMassenanpassungQualitäts- und ProzesstechnikErgebnisse teilen und kommunizierenBetreff: Warum entfernt JMP JSL /usr/local/bin (und andere Pfade) aus Python os.environ['PATH'] unter MacOS?Python von JMP sieht dieselben Umgebungsvariablen wie JMP selbst. Die gemeinsam genutzte Bibliothek von Python wird in den Prozessraum von JMP geladen, sodass Python von JMP nur sieht, was JMP sieht. Sie können dies überprüfen, indem Sie die folgende JSL ausführen.
Pfad = Umgebungsvariable abrufen ( "WEG" );
Was Sie von JSL erhalten, und was Sie von os.environ erhalten, sollte dasselbe sein.
Die eigentliche Frage ist, warum JMP einen anderen Weg sieht als die Konsole ... Sie müssen daran denken, dass die Shell-Umgebung .login-, .profile-, .bashrc-, .zshrc-, ...-Dateien verarbeitet, bevor Sie zur Befehlszeile gelangen. Zweitens verarbeitet die GUI-Startumgebung diese Dateien nicht. Es kann die Dateien ~/.login oder ~/.profile verarbeiten, aber nach einer Änderung müssten Sie sich zuerst abmelden und wieder anmelden, damit Änderungen an den Init-Dateien der Login-Shell verarbeitet werden.
Wenn Sie solche Pfade benötigen, können Sie sie in Python zum PATH hinzufügen, indem Sie os.environ im Skript aktualisieren. Das sollte nur aktualisieren, was Python als Umgebungsvariablen sieht, und nicht die Shell-Umgebung außerhalb von JMP ändern.