Comment configurer Python pour JMP 14 ?Je suis très nouveau sur Python, donc j'espère que c'est une question facile.J'ai Python version 3.6 et 3.7 installé.J'ai installé numpy, matplotlib, scipy et pdfkit dans les deux versions.Cependant, j'obtiens des erreurs dans la fenêtre de journal lorsque j'essaie d'exécuter des exemples à partir de l'index de script.
Pour l'exemple Python Get :
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
J'obtiens les erreurs suivantes :
//:*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
/*:
/**********/
# Read a binary file containing doubles into an ndarray
x1 = _JMPnp.fromfile("C:\\Users\\pmroz\\AppData\\Local\\Temp\\eacac6a7-dd5e-4ceb-dcbd0248455fb787.csv", dtype=_JMPnp.float64, count=-1, sep="")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPnp' is not defined
x1 = [1, 2, 3];
x2 = .;
/**********/
# Import a JMP exported .csv file into a Data Frame
dt1 = _JMPpd.read_csv("C:\\Users\\pmroz\\AppData\\Local\\Temp\\8b6475be-aaf0-408b-d1cae4522f253881.csv")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpd' is not defined
Send Expects Scriptable Object in access or evaluation of 'Send' , dt2 << /*###*/New Data View/*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
Qu'est-ce que je rate?Merci.
Re : Comment configurer Python pour JMP 14 ?Il y a quelques choses à faire ici pour utiliser JMP et Python.
1. JMP dispose d'un langage de script et d'un journal pour JSL.
* En voyant les valeurs dans JSL, vous pouvez les évaluer et les voir dans le journal, vous pouvez les créer ou les placer dans des tableaux de données, vous pouvez les mettre dans des bases de données ou même dessiner vous-même une sortie graphique.
* Vous pouvez écrire des valeurs dans un fichier.
2. Python est son propre environnement, a et b ci-dessus sont également vrais en python, mais en utilisant des instructions et des programmes python. Tout comme le show de JSL affiche une valeur JSL, l'instruction print() de python imprimera une variable python.
Dans l'exemple Python Send() du guide de script
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Le Python Submit (« print(x) »); // exécute le code python (« print(x) ») et imprime la valeur de x telle que vue par Python, c'est une variable distincte du JSL x. et jusqu'au Python Send(x) il n'y a pas de variable x du côté Python, seulement le JSL x
Donc si par exemple le code ci-dessus était
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
x = [3,2,1];
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Show( x );
Vous obtiendrez du Python Submit("print(x)") le x étant 1, 2, 3
Mais du Spectacle (x);
Vous obtiendrez le 3, 2, 1 dont vous avez besoin pour vous rappeler que vous travaillez dans deux environnements de script différents.
Je vous suggère de vous familiariser avec l'exploration des capacités de JSL sans python, il existe des tonnes d'échantillons JSL et de nombreux documents pour comprendre le travail avec JSL. Et, en explorant à nouveau la programmation en Python en dehors de JMP, il existe des exemples trop nombreux pour pouvoir compter sur Internet, y compris les sites de didacticiels. Avoir une bonne connaissance de chacune vous donnera un aperçu des forces et des faiblesses de chaque langue. Parce que vous devez décider où vous voulez effectuer quels calculs. Vous pouvez tout faire en python, en transmettant uniquement les données initiales et en renvoyant les résultats, ou vous pouvez presque tout faire en JSL, en appelant Python pour effectuer des calculs ou des traitements plus faciles à réaliser en Python qu'en JSL, ou tout autre mélange entre les deux.
Paul
Re : Comment configurer Python pour JMP 14 ?Salut Paul,
Comment voyez-vous réellement tout ce que vous soumettez à Python en Python à partir d'un fichier JSL ? Je n'ai aucune expérience dans ce domaine, mais lorsque j'envoie x1 comme exemple que vous avez et que je vais dans une fenêtre de script python, x1 n'est pas stocké. Avez-vous une sorte de documentation étape par étape à ce sujet ?
Re : Comment configurer Python pour JMP 14 ?Bonjour, j'ai également commencé à apprendre Python auprès de CETPA INFOTECH. Je n'ai pas encore beaucoup de connaissances mais tout ce que je sais et utilisé je le partage ici :
Suivez le lien pour télécharger le code source zippé disponible pour Unix/Linux.
Téléchargez et extrayez des fichiers.
Modification du fichier Modules/Setup si vous souhaitez personnaliser certaines options.
exécutez le script ./configure.
faire.
faire l'installation.
Après avoir lu la réponse de Paul, je comprends brièvement et je suis d'accord avec sa solution.Re : Comment configurer Python pour JMP 14 ?Salut Paul,
Je l'ai déjà fait fonctionner (au moins sur un PC, sur l'autre il y a une erreur lorsque je veux importer numpy). Je voulais suggérer que, lorsque vous travaillez sur ce sujet, vous puissiez le configurer de manière à permettre de choisir facilement entre différents environnements Conda.
Le problème avec le transfert de la table de données vers les pandas est-il un problème connu ou est-ce que je fais quelque chose de mal ?
Merci
Gerd
Re : Comment configurer Python pour JMP 14 ?Vous devez définir votre Python Init() et/ou vos variables d'environnement système pour pointer vers l'installation de conda. Voir les réponses précédentes à cette publication de la communauté. Il existe des exemples de définition des paramètres dans Python Init() et de définition de variables d'environnement pour pointer vers votre installation Python.
Re : Comment configurer Python pour JMP 14 ?Salut Paul,
J'essaie juste d'envoyer un datatable à Python. Cependant, toutes les colonnes se retrouvent dans une seule colonne de chaîne, les colonnes réelles étant séparées par \t (voir image). Une idée de ce qui ne va pas ici ? Avez-vous besoin d'une version spéciale pandas (ou d'une version spéciale matplotlib, car cela provoque également une erreur) ?
Concernant la configuration de Python, ce serait formidable si l'on pouvait sélectionner un environnement conda à utiliser.

Salutations
Gerd
Re : Comment configurer Python pour JMP 14 ?Salut @Rob128 ,
L'utilisation d'une connexion bidirectionnelle complète à Python via une installation locale de Python qui permet à JMP d'envoyer des données à Python, d'exécuter du code Python à partir d'un script JSL,
renvoyer des données et des résultats à partir de programmes Python et explorer de manière interactive les résultats Python dans JMP a été introduit dans JMP 14.
Comme vous l'avez démontré en utilisant JMP 13 (avec Run Program), vous pouvez contrôler un programme externe à l'aide de stdin et stdout.
Les commentaires de @Paul_Nelson font référence à l'implémentation JMP 14 de la connexion bidirectionnelle complète à Python et non via Exécuter de programme.
HTH,
Stan
Re : Comment configurer Python pour JMP 14 ?Je pensais que c'était le cas, car mon .py qui n'est qu'une copie de Hello world fonctionne avec ce jsl :
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<GET version=""></GET>
Et le journal :
//:*/
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<Get Version;
/*:
"Hello World
"
Re : Comment configurer Python pour JMP 14 ?Je pensais que l'interface Python n'était pas disponible avant JMP 14.
Re : Comment configurer Python pour JMP 14 ?Salut Paul,
Merci pour votre travail, malheureusement je n'ai que la version 13.0 de JMP. Et je travaille avec Python version 3.7.1 sans Anaconda.
J'ai toutes les bibliothèques nécessaires ( numpy, scipy, matplotlib, panda... ).
Je suis sous Windows 10, j'ai fait votre astuce "nom de variable" (c'est bien expliqué d'ailleurs) mais avec ce bout de code j'ai du mal...
Jetez plutôt un oeil dessus :
Names Default To Here( 1 );
Python Init(Use Python Version("3.7.1"));
/*Python Submit("\[
import sys
sys.path=['', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
*/
x1 = [1, 2, 3];
Python Send( x1 );
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();
Remarque : Python Init n'est pas en police bleue.
La fenêtre du journal affiche :
Nom non résolu : Python Init lors de l'accès ou de l'évaluation de 'Python Init', Python Init (Utiliser la version Python( "3.7.1" ) ) /*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init( Use Python Version( "3.7.1" ) ) /*###*/;
x1 = [1, 2, 3];
Python Send( x1 );
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();
Merci d'avoir lu 
Robin
Re : Comment configurer Python pour JMP 14 ?Bien sûr, après avoir posté, je trouve une meilleure solution, mais cela implique de définir une variable d'environnement.JMP 14 recherche une variable d'environnement.Il s'agit du sys.path que j'ai décrit dans le post précédent, mais vous devez le définir comme une liste de chemins JSL.Sous Windows 10, vous devez accéder aux propriétés système, aux paramètres système avancés, aux variables d'environnement et créer une nouvelle variable d'environnement.
Variable Name: Python sys path
Variable Value: {"", "C:\\local\\anaconda3\\python36.zip", "C:\\local\\anaconda3\\DLLs",
"C:\\local\\anaconda3\\lib", "C:\\local\\anaconda3", "C:\\local\\anaconda3\\lib\\site-packages",
"C:\\local\\anaconda3\\lib\\site-packages\\win32",
"C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib",
"C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin"}
Ce qui permet alors à ce script
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
x1 = [1, 2, 3];
Python Send( x1 );
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();
Pour donner l'attendu
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

Re : Comment configurer Python pour JMP 14 ?Tout d'abord, je tiens à m'excuser pour les problèmes que vous rencontrez avec le support Python de JMP.Le développeur original de la fonctionnalité Python a pris sa retraite à la fin du cycle de développement de JMP 14. Je suis en train de parcourir le code pour résoudre les problèmes en suspens.
Il existe des problèmes avec la capacité de JMP à localiser Python.Si JMP le trouve tout seul, vous êtes prêt à partir, généralement si vous n'avez qu'une seule version de Python sur votre système, tout ira bien.En cas d'échec, il est difficile de contourner le problème dans les versions actuelles de JMP. De plus, il existe des différences entre Windows et Mac en termes de capacité ou de difficulté à trouver Python. J'ai découvert quelques bugs dans le code censé vous permettre de spécifier où se trouve votre instance de Python.
Utiliser le chemin système Python( {"",...} ) dans Python Init() fonctionne sur JMP pour Mac v14.1 ou version ultérieure, mais est interrompu sur JMP 14.0, 14.1 pour Windows.
Windows JMP ne le gère pas bien s'il existe plusieurs versions de Python sur le système. Vous devez spécifier la version de Python à utiliser dans Python Init ( Use Python Version("3.6")); par exemple pour sélectionner la version 3.6.Même avec cette spécification, vous pouvez toujours obtenir des erreurs dans le journal lors de la localisation des modules que JMP tente de charger pour assurer l'interopérabilité.Sur Mac, JMP 14.0 rencontrera des problèmes s'il existe plusieurs versions de Python3. Mac JMP 14.1 corrige ce problème en utilisant la version la plus élevée de Python 3, plutôt que de renoncer s'il y en a plusieurs.
Sur mon Mac où Python 3.6 est installé dans /Library/Frameworks/Python.framework, mon instruction Python Init() est :
Python Init( Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Utiliser la version Python("3.6") );
L'instruction Path() fonctionne sur Mac, mais pas sur Windows...
Sur mon bureau Windows 10, j'ai installé Anaconda avec Python 3.6 dans mon répertoire C:\local\anaconda3.
Le script suivant s'exécute pour moi, même s'il supprime les avertissements indiquant que les modules ne sont pas trouvés. Pour résoudre le problème de chargement du module, la première chose que je fais après l'initialisation est d'importer le module sys, puis de définir sys.path sur la valeur du chemin qui serait renvoyée si vous effectuez les opérations suivantes dans l'interpréteur Python, puis de charger ces modules dans mon script avant de continuer.
Localisation de votre sys.path à partir de l'interpréteur Python.
C:\local\anaconda3>.\python.exe
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print (sys.path)
['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
>>>
Mon script modifié :
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
Python Submit("\[
import sys
sys.path=['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
x1 = [1, 2, 3];
Python Send( x1 );
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();
Avec la sortie suivante dans le journal
/**********/
# Import the numpy module for array and matrix support
import numpy as _JMPnp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'numpy'
/**********/
# Import the scipy module for scientific computing support
import scipy as _JMPsp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'scipy'
/**********/
# Import the pandas module for Series/Data Frame support
import pandas as _JMPpd
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'pandas'
/**********/
# Import the matplotlib module for 2D plotting
import matplotlib as _JMPmpl
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Import the matplotlib.pyplot module for plots
import matplotlib.pyplot as _JMPpp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpp' is not defined
Unable to import the 'numpy' Python module
Unable to import the 'scipy' Python module
Unable to import the 'pandas' Python module
Unable to import the 'matplotlib' Python module
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0
Testé par rapport à JMP 14.1 et aux développements actuels.
Encore une fois, au nom de JMP Development, je m'excuse pour l'état brut du support Python.Veuillez rester avec nous pendant que nous continuons à corriger et à améliorer cette fonctionnalité importante. S'il te plaît signaler des problèmes vous trouvez et des suggestions de nouvelles fonctionnalités.
Merci.
Re : Comment configurer Python pour JMP 14 ?JMP Pro 14.0 et Anaconda 1.8.7 sont installés et je peux exécuter ce code. le _JMPxx, fait référence à numpy : np, pandas : pd et matplotlib.pyplot : pp. Il semble que les pandas soient une dépendance.
Je reçois un avertissement concernant "Impossible d'importer le module Python 'matplotlib.pyplot'", la première fois que j'exécute les 6 premières lignes de code, mais si je les réexécute, aucune erreur n'apparaît dans le journal.