Noyau JMP 18 Python interférant avec l'installation de miniconda Python (Exécuter le programme)JMP 18 apporte Python natif. Cette installation Python open source utilise conda au lieu de pip, mais elle semble maintenant en panne.
https://github.com/industrial-data/pyJMP/
La façon dont pyJMP fonctionne consiste à exécuter le fichier bat suivant à l'aide de 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 --version jupyter liste des spécifications du noyau
start /wait /B "" jupyter nbconvert --execute --to notebook --inplace %notebook_file_path%
Notez que Python est activé en premier, puis nous appelons une fonction dans Jupyter.
L'erreur suivante ne se produit que dans JMP 18, qui semble appeler sa propre installation Python (v 3.11 au lieu de 3.10 installée avec conda). Si l'on exécute ce fichier .bat à partir de l'Explorateur Windows ou d'un autre cmd, le code fonctionne comme prévu.
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 Noyaux 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'
On ne sait pas comment éviter cela. Des idées?
Automatisation et scriptsles fenêtresRe : Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)Lisez ceci https://community.jmp.com/t5/JMPer-Cable/JMP-is-Pythonic-Enhanced-Python-Integration-in-JMP-18/ba-p/723997 .
Il est probable que le package PyJMP répertorié ci-dessus ne fonctionnera pas avec la v18 avec quelques modifications.
Re : Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)Certes, nous devrons réécrire notre complément Predictor Explainer à un moment donné.
La principale différence est que JMP 18 utilise pip tandis que pyJMP utilise des packages conda.
Pour certains cas où .whl (roues) ne sont pas inclus, conda est toujours avantageux car il inclut des binaires spécifiques au système d'exploitation sans avoir à compiler.
Re : Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)Merci, Paul.
Je comprends le défi et apprécie les efforts déployés dans JMP 18. C'est pourquoi nous avons fini par développer PyJMP et écrire des fichiers texte temporaires pour transmettre les données dans les deux sens.
Pourtant, je ne comprends pas comment un fichier .bat exécuté avec RunProgram() interfère avec l'environnement Python JMP 18.
Avez-vous des suppositions ?
Re : Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)La question est la suivante : votre complément dépend-il du code Python exécuté par JMP ?
Je suppose que oui. JMP 18 uniquement utilise le Python installé par JMP. JMP lui-même charge la DLL python311. Ainsi, si l'un de vos codes Python essaie de faire en sorte que JMP exécute du code qui doit charger Python310.dll, vous obtiendrez l'erreur puisque Python311.dll est déjà chargé et actif dans JMP. Nous avons renommé python.exe en jmp_python.exe pour empêcher Run Program() de trouver accidentellement le Python de JMP lors de la tentative d'exécution de python.exe ou python3.exe. Votre script batch ne devrait donc pas essayer d'exécuter l'exécutable Python 3.11 (sauf si vous nous essayons de l'exécuter sur l'une des premières versions de JMP 18 EA).
Une chose que vous devrez peut-être vérifier est de vous assurer que dans votre fichier de commandes, vous vous assurez que le PATH vers le python310.dll de l'environnement conda précède le chemin d'accès au répertoire exécutable JMP puisque le python311.dll réside dans le répertoire exécutable JMP. Pourtant, je pense que si votre Python3.10 est en cours d'exécution, il chargerait le python310.dll.
Re : Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)J'ai trouvé la cause première du problème, en suivant les idées partagées par Paul (merci !).
RunProgram() démarre et inclut le dossier d'installation JMP dans le PATH.
C:\Program Files\JMP\JMP\18
C:\Program Files\JMP\JMPPRO\18
Ce dossier contient jmp_python.exe, mais aussi python311.dll et autres.
Ainsi, pour éviter les problèmes, j'ai modifié le répertoire courant dans mon script .bat.
Re: Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)De plus, la nouvelle intégration de Python dans JMP élimine probablement le besoin de PyJMP. D'autres packages et outils qui s'appuient sur PyJMP peuvent probablement être réécrits pour utiliser la nouvelle intégration de Python.
Re: Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)A ma grande surprise, malgré ce qui est écrit dans l’article, cela interfère.
Je ne sais pas comment, mais Jupyter trouve le noyau JMP 18 lorsque le fichier .bat est appelé à partir de JSL uniquement via Run Program().
Re: Le noyau Python JMP 18 interfère avec l'installation de Miniconda Python (Exécuter le programme)JMP 18 installe Python 3.11.5 avec JMP 18.0 et 3.11.9 avec la mise à jour de sécurité JMP 18.0.1. Cela nous permet de fournir l'intégration approfondie nécessaire pour fournir le package saut intégré. Cela a également été fait en raison des nombreux problèmes rencontrés par de nombreuses personnes pour configurer JMP et Python pour fonctionner ensemble, ainsi que pour résoudre le problème des différentes installations Python d'un ordinateur de bureau à l'autre.
JMP 18 ne prend plus en charge l'exécution de Python autre que la distribution fournie avec JMP.