El kernel JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)JMP 18 trae Python nativo. Esta instalación de Python de código abierto usa conda en lugar de pip, pero ahora parece no funcionar.
https://github.com/industrial-data/pyJMP/
La forma en que funciona pyJMP es ejecutando el siguiente archivo bat usando RunProgram() .
set JMP_PYTHON_PTH=C:\ProgramData\miniforge_JMP
CALL %JMP_PYTHON_PTH%\Scripts\activate.bat %JMP_PYTHON_PTH%
SET current_path=%~dp0
echo %current_path:~0,-1%
SET notebook_file=jmp_addin_minimum_features.ipynb
SET notebook_file_path=%current_path%%notebook_file%
echo %notebook_file_path%
python --versión lista de especificaciones del kernel jupyter
start /wait /B "" jupyter nbconvert --execute --to notebook --inplace %notebook_file_path%
Observe que Python se activa primero y luego llamamos a una función dentro de Jupyter.
El siguiente error solo ocurre en JMP 18, que parece llamar a su propia instalación de Python (v 3.11 en lugar de 3.10 instalado con conda). Si uno ejecuta ese archivo .bat desde el Explorador de Windows o un cmd diferente, el código funciona como se esperaba.
C:\Program Files\JMP\JMPPRO\18>set JMP_PYTHON_PTH=C:\ProgramData\miniforge_JMP
C:\Program Files\JMP\JMPPRO\18>CALL C:\ProgramData\miniforge_JMP\Scripts\activate.bat C:\ProgramData\miniforge_JMP
C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer
C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer\jmp_addin_minimum_features.ipynb
<FONT color="#008000"><U><STRONG>Python 3.10.10 Kernels disponibles: python3 C:\ProgramData\miniforge_JMP\share\jupyter\kernels\python3</STRONG></U></FONT>
[NbConvertApp] Converting notebook C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer\jmp_addin_minimum_features.ipynb to notebook
[NbConvertApp] ERROR | Module use of <FONT color="#FF0000"><U><STRONG>python311.dll</STRONG></U> </FONT>conflicts with this version of Python.
Traceback (most recent call last):
File \!"C:\ProgramData\miniforge_JMP\lib\site-packages\traitlets\traitlets.py\!", line 656, in get
value = obj._trait_values[self.name]
KeyError: 'kernel_dirs'
No está claro cómo evitar esto. ¿Algunas ideas?
Automatización y secuencias de comandosventanasRe: El kernel de JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)Lea esto https://community.jmp.com/t5/JMPer-Cable/JMP-is-Pythonic-Enhanced-Python-Integration-in-JMP-18/ba-p/723997 .
Es probable que el paquete PyJMP enumerado anteriormente no funcione con la versión 18 con alguna modificación.
Re: El kernel de JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)Es cierto que tendremos que reescribir nuestro complemento Predictor Explicador en algún momento.
La principal diferencia es que JMP 18 usa pip mientras que pyJMP usa paquetes conda.
En algunos casos en los que no se incluyen .whl (ruedas) , conda sigue siendo ventajoso ya que incluye binarios específicos del sistema operativo sin tener que compilar.
Re: El kernel de JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)Gracias, Pablo.
Entiendo el desafío y aprecio los esfuerzos realizados en JMP 18. Es por eso que terminamos desarrollando PyJMP y escribiendo archivos de texto temporales para pasar los datos de un lado a otro.
Aún así, no entiendo cómo un archivo .bat ejecutado con RunProgram() interfiere con el entorno JMP 18 Python.
¿Tiene alguna suposición?
Re: El kernel de JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)La pregunta es: ¿su complemento depende de que JMP ejecute código Python?
Supongo que sí. Sólo JMP 18 utiliza el Python que instala JMP. El propio JMP carga el dll python311. Entonces, si parte de su código Python intenta que JMP ejecute código que necesita cargar Python310.dll, obtendrá el error ya que Python311.dll ya está cargado y activo dentro de JMP. Cambiamos el nombre de python.exe a jmp_python.exe para evitar que Run Program() encuentre accidentalmente Python de JMP al intentar ejecutar python.exe o python3.exe, por lo que su secuencia de comandos por lotes no debería intentar ejecutar el ejecutable de Python 3.11 (a menos que están intentando ejecutar esto en una de las primeras versiones de JMP 18 EA).
Una cosa que quizás deba tener en cuenta es asegurarse de que en su archivo por lotes garantice que la RUTA al python310.dll del entorno conda preceda a la ruta al directorio ejecutable de JMP, ya que python311.dll reside en el directorio ejecutable de JMP. Sin embargo, creo que si Python3.10 se está ejecutando, estaría cargando python310.dll.
Re: El kernel de JMP 18 Python interfiere con la instalación de miniconda Python (Ejecutar programa)Encontré la causa raíz del problema, siguiendo las ideas compartidas por Paul (¡gracias!).
RunProgram() inicia e incluye la carpeta de instalación de JMP en la RUTA.
C:\Program Files\JMP\JMP\18
C:\Program Files\JMP\JMPPRO\18
Esta carpeta contiene jmp_python.exe, pero también python311.dll y otros.
Por lo tanto, para evitar problemas, cambié el directorio actual en mi script .bat.
Re: El kernel de Python de JMP 18 interfiere con la instalación de Python de miniconda (Ejecutar programa)Además, la nueva integración de Python en JMP probablemente elimine la necesidad de PyJMP. Es probable que otros paquetes y herramientas que dependen de PyJMP se puedan reescribir para utilizar la nueva integración de Python.
Re: El kernel de Python de JMP 18 interfiere con la instalación de Python de miniconda (Ejecutar programa)Para mi sorpresa, a pesar de lo escrito en el artículo, sí interfiere.
No estoy seguro de cómo, pero Jupyter encuentra el kernel JMP 18 cuando el archivo .bat se llama desde JSL solo a través de Run Program().
Re: El kernel de Python de JMP 18 interfiere con la instalación de Python de miniconda (Ejecutar programa)JMP 18 instala Python 3.11.5 con JMP 18.0 y 3.11.9 con la actualización de seguridad de JMP 18.0.1. Esto nos permite proporcionar la integración profunda necesaria para proporcionar el paquete saltar integrado. Esto también se hizo debido a los numerosos problemas que muchos tenían para configurar JMP y Python para que funcionen juntos, así como para resolver el problema de las diferentes instalaciones de Python de un escritorio a otro.
JMP 18 ya no admite la ejecución de Python que no sea la distribución suministrada con JMP.