Perché JMP JSL rimuove /usr/local/bin (e altri percorsi) da Python os.environ['PATH'] su MacOS?Dichiarazione di emissione:
-- Su Mac OS, quando JSL avvia l'interprete Python, rimuove /use/local/bin e altri percorsi da os.environ['PATH']
Come riprodurre questo problema:
-- Per i seguenti codici Python
import os
print(os.environ)
-- Se i codici vengono eseguiti nel Terminale di Mac OS, i risultati saranno i seguenti:
(Nota: di seguito è mostrato solo l'elemento 'PATH'. Altri elementi irrilevanti non sono mostrati)
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'})-- Se i codici vengono eseguiti in JSL (vedere i codici JSL di seguito)
Python Init();
python_codes =
"<BR />import os
print(os.environ)
";
Python Init();
Python Submit (python_codes);
Python Term();
I risultati saranno
environ({ 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'})Domanda:
- Perché JMP/JSL rimuove questi percorsi?
- Esiste un modo per far sì che JMP/JSL rispettino le impostazioni del percorso dalla shell, senza dover modificare manualmente le impostazioni 'PATH' nei codici JSL Python?
Automazione e scriptingsistema operativo macOSPersonalizzazione di massaIngegneria della qualità e dei processiCondivisione e comunicazione dei risultatiRi: Perché JMP JSL rimuove /usr/local/bin (e altri percorsi) da Python os.environ['PATH'] su MacOS?Python di JMP vede le stesse variabili di ambiente che vede JMP stesso. La libreria condivisa di Python viene caricata all'interno dello spazio di processo di JMP, quindi Python di JMP vedrà solo ciò che vede JMP. Puoi verificarlo eseguendo il seguente JSL.
percorso = Ottieni variabile d'ambiente ( "IL PERCORSO" );
Quello che ottieni da JSL e quello che ottieni da os.environ dovrebbero essere gli stessi.
La vera domanda è perché JMP vede un percorso diverso rispetto alla console... Devi ricordare i file dell'ambiente shell .login, .profile, .bashrc, .zshrc, ... prima di arrivare alla riga di comando. In secondo luogo, l'ambiente di avvio della GUI non elabora quei file. Potrebbe elaborare i file ~/.login o ~/.profile, ma dopo una modifica dovresti prima disconnetterti e riconnetterti per elaborare le modifiche ai file init della shell di accesso.
Se hai bisogno di tali percorsi, puoi aggiungerli al PERCORSO in Python aggiornando os.environ all'interno dello script. Ciò dovrebbe aggiornare solo ciò che Python vede come variabili di ambiente e non alterare l'ambiente della shell al di fuori di JMP.