¿Por qué JMP JSL elimina /usr/local/bin (y otras rutas) de Python os.environ['PATH'] en MacOS?Declaración de emisión:
-- En Mac OS, cuando JSL inicia el intérprete de Python, elimina /use/local/bin y otras rutas de os.environ['PATH']
Cómo reproducir este problema:
-- Para los siguientes códigos Python
import os
print(os.environ)
-- Si los códigos se ejecutan en el Terminal de Mac OS, los resultados serían los siguientes:
(Nota: a continuación solo se muestra el elemento 'PATH'. No se muestran otros elementos irrelevantes)
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'})-- Si los códigos se ejecutan en JSL (ver códigos JSL a continuación)
Python Init();
python_codes =
"<BR />import os
print(os.environ)
";
Python Init();
Python Submit (python_codes);
Python Term();
Los resultados serán
environ({ 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'})Pregunta:
- ¿Por qué JMP/JSL elimina estas rutas?
- ¿Hay alguna manera de hacer que JMP/JSL respete la configuración de ruta del shell, además de modificar manualmente la configuración 'PATH' en los códigos Python de JSL?
Automatización y scriptingmacOSPersonalización masivaIngeniería de Calidad y ProcesosCompartir y comunicar resultadosRe: ¿Por qué JMP JSL elimina /usr/local/bin (y otras rutas) de Python os.environ['PATH'] en MacOS?Python de JMP ve las mismas variables de entorno que ve JMP. La biblioteca compartida de Python se carga dentro del espacio de proceso de JMP, por lo que Python de JMP solo verá lo que ve JMP. Puede verificar esto ejecutando el siguiente JSL.
camino = Obtener variable de entorno ( "SENDERO" );
Lo que obtienes de JSL y lo que obtienes de os.environ debería ser lo mismo.
La verdadera pregunta es por qué JMP ve un camino diferente al de la consola... Debe recordar los procesos del entorno de shell .login, .profile, .bashrc, .zshrc, ... antes de llegar a la línea de comandos. En segundo lugar, el entorno de inicio de la GUI no procesa esos archivos. Puede procesar los archivos ~/.login o ~/.profile, pero después de un cambio, primero tendrá que cerrar la sesión y volver a iniciarla para que se procesen los cambios en los archivos de inicio del shell de inicio de sesión.
Si necesita dichas rutas, puede agregarlas a la RUTA dentro de Python actualizando os.environ dentro del script. Eso solo debería actualizar lo que Python ve como variables de entorno y no alterar el entorno de shell fuera de JMP.