I'm experiencing issues integrating Python with JMP 17. Despite following the recommended steps, JMP crashes every time I run Python Init. Here are the details:
Configuration du système :
- Version JMP : 17
- Version Python : 3.9.13 (64 bits) (j'ai également essayé la version 3.13.1)
- Système d'exploitation : Windows 10 (64 bits)
Mesures prises :
- J'ai installé Python 3.9.13 et je l'ai ajouté au PATH.
- Paquets Python requis installés : numpy, pandas, matplotlib, scipy, PyQt5.
- Set the environment variable
JMP_PYTHON_MODULE_PATH to C:\Program Files\Python39\python39.dll. - Installation de Python vérifiée et installations de packages via l'invite de commande.
- J'ai essayé d'exécuter un simple script JSL pour initialiser Python :
// Initialize Python with the specified path
Python Init( Path( "C:\\Program Files\\Python39\\python39.dll" ) );
// Simple Python code to test initialization
python_code = "
print('Hello from Python!')
";
// Run the Python code
Python Submit(python_code);
// Close the Python session
Python Term();Problème: JMP crashes and closes immediately upon running Python Init.
Étapes de dépannage suivies :
- J'ai vérifié le chemin Python et l'emplacement du fichier DLL.
- J'ai désinstallé les autres versions de Python pour éviter les conflits.
- JMP 17 réinstallé.
- J'ai vérifié les journaux JMP pour les messages d'erreur (aucun trouvé).
Malgré ces efforts, le problème persiste. Quelqu'un d'autre a-t-il rencontré ce problème ou a-t-il des suggestions sur la façon de le résoudre ?
Merci d'avance pour votre aide !
Avez-vous la possibilité de mettre à jour vers JMP18.
la mise à jour est gratuite pour chaque utilisateur.
En plus de nombreuses améliorations importantes, JMP + Python interagissent désormais à merveille : )
J'aimerais que ce soit à moi de décider si je peux le mettre à niveau, mais l'entreprise pour laquelle je travaille reçoit toujours les nouvelles mises à jour logicielles avec au moins un an de retard.
Je contacterais directement le support JMP et créerais un ticket d'incident.
support@jmp.com
Comme mentionné par d'autres, JMP 18 vous simplifie grandement la vie en ce qui concerne Python. JMP installe un Python 3.11 intégré privé qui fonctionne immédiatement avec JMP. Faire fonctionner Python avec JMP 14-17 peut être difficile, et c'est la principale raison pour laquelle JMP est désormais fourni avec Python.
Supprimez d'abord la variable d'environnement. JMP_PYTHON_MODULE_PATH
Deuxièmement, utilisez-vous Python.org ou Anaconda ? Utilisez Python.org.
Troisièmement, JMP 17 est 64 bits, vous devez utiliser Python 64 bits.
J'ai réussi à faire fonctionner Anaconda, mais uniquement en parcourant le code source JMP dans le débogueur pour configurer correctement Python Init.
De plus, JMP 14-17 n'est pas conçu pour fonctionner avec des environnements virtuels ( venv).
Les fonctions Python Connect() et Python Init() prennent une variété de paramètres qui peuvent résoudre le problème.
Le plus simple à essayer est :
Python Init ( Use Python Version("3.9") );
Vous avez déjà essayé le :
Python Init (
Path("C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll") <BR />);
Enfin, la méthode « brute force » consiste à spécifier à la fois le chemin d'accès à la DLL et le chemin d'accès complet du système Python sous forme de liste JSL. Lancez Python à partir de la ligne de commande et exécutez ce qui suit.
import sys
print ( sys.path )
Donnant ce qui suit sur ma machine :
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\_me_\\panels\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\Pythonwin']
>>>
Vous pouvez maintenant prendre la liste Python [ ... ] et créer une liste JSL à partir de celle-ci pour la transmettre à Python Init() comme indiqué ci-dessous. Ici, les deux diffèrent puisque le script ci-dessous est collé à partir d'un script que j'ai exécuté il y a quelque temps. J'ai exécuté le Python ci-dessus aujourd'hui. En cas de doute, utilisez tout ce que Python lui-même renvoie pour son sys.path.
Names Default To Here( 1 );
Python Init(
Path("C:\\Users\\_me__\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll"),
Python Sys Path(
{
"",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\DLLs",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39",
"C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages"
}
)
);
Python Submit("\[
import sys
print(sys.path)
print(sys.version)
]\");
x1 = [1, 2, 3];
Python Send( x1 );
x1 = [3,2,1];
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
//Python Term();
Python Submit("\[
print(dt1)
]\");
Au-delà de cela... Passez à JMP 18.
merci, la suppression de la variable d'environnement et la transmission de la liste sys.path à Python Init ont fonctionné.