Come configurare Python per JMP 14?Sono molto nuovo in Python quindi spero che questa sia una domanda facile.Ho installato Python versione 3.6 e 3.7.Ho installato numpy, matplotlib, scipy e pdfkit in entrambe le versioni.Tuttavia ricevo errori nella finestra di registro quando provo a eseguire esempi dall'indice di scripting.
Per l'esempio 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();
Ottengo i seguenti errori:
//:*/
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();
Cosa mi manca?Grazie.
Ri: Come configurare Python per JMP 14?Ci sono un paio di cose da fare qui per utilizzare JMP e Python.
1. JMP dispone di un linguaggio di scripting e di un registro per JSL.
* Vedendo i valori in JSL, puoi valutarli e vederli nel registro, puoi crearli o inserirli in tabelle di dati, puoi inserirli in database o persino disegnare tu stesso l'output grafico.
* È possibile scrivere valori in un file.
2. Python è il suo ambiente, aeb sopra valgono anche in Python, ma usando istruzioni e programmi Python. Proprio come show di JSL mostra un valore JSL, l'istruzione print( ) di Python stamperà una variabile Python.
Nell'esempio Python Send() nella guida allo scripting
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();
L'invio Python (“print(x)”); // sta eseguendo il codice Python (“print(x)”) e stampando il valore di x come visto da Python, è una variabile separata dalla JSL x. e fino a Python Send(x) non c'è alcuna variabile x sul lato Python, solo JSL x
Quindi, se ad esempio il codice sopra fosse
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 );
Otterrai da Python Submit(“print(x)”) la x che è 1, 2 ,3
Ma dallo Spettacolo (x);
Otterresti il 3, 2, 1 che devi ricordare che operi in due diversi ambienti di scripting.
Ti suggerirei di acquisire familiarità con l'esplorazione delle funzionalità di JSL senza Python, ci sono tonnellate di esempi JSL e molti materiali per capire come lavorare con JSL. E, esplorando ancora una volta la programmazione in Python al di fuori di JMP, ci sono esempi troppo numerosi per poterli contare su Internet, compresi i siti di tutorial. Avere una buona familiarità con ciascuno di essi ti darà un'idea dei punti di forza e di debolezza di ogni lingua. Perché devi decidere dove vuoi fare quali calcoli. Puoi fare tutto in Python, passando solo i dati iniziali e restituendo i risultati, oppure puoi fare quasi tutto in JSL, chiamando Python per eseguire alcuni calcoli o elaborazioni che sono più facili da realizzare in Python rispetto a JSL o qualsiasi combinazione intermedia.
Paolo
Ri: Come configurare Python per JMP 14?Ciao Paul,
Come vedi effettivamente tutto ciò che invii a Python in Python da un file JSL? Non ho alcuna esperienza in questo senso, ma quando invio x1 come esempio e vado in una finestra di scripting Python x1 non viene archiviato. Hai una sorta di documentazione passo passo su questo?
Ri: Come configurare Python per JMP 14?Ciao, ho anche iniziato a imparare Python da CETPA INFOTECH. Non ho ancora molta conoscenza, ma tutto quello che so e ho usato lo condivido qui:
Segui il collegamento per scaricare il codice sorgente compresso disponibile per Unix/Linux.
Scarica ed estrai file.
Modificare il file Moduli/Configurazione se si desidera personalizzare alcune opzioni.
eseguire lo script ./configure.
Fare.
effettuare l'installazione.
Dopo aver letto la risposta di Paul, capisco brevemente e sono d'accordo con la sua soluzione.Ri: Come configurare Python per JMP 14?Ciao Paul,
L'ho già fatto funzionare (almeno su un PC, sull'altro si verifica un errore quando voglio importare Numpy). Volevo suggerire che, quando lavori su questo argomento, potresti impostarlo in modo da consentire di scegliere facilmente tra diversi ambienti Conda.
Il problema con il trasferimento della tabella dati su Panda è noto o sto facendo qualcosa di sbagliato?
Grazie
Gerd
Ri: Come configurare Python per JMP 14?È necessario impostare Python Init() e/o le variabili di ambiente del sistema in modo che puntino all'installazione di conda. Vedi le risposte precedenti a questo post della community. Esistono esempi sia di impostazione dei parametri all'interno di Python Init(), sia di impostazione di variabili di ambiente in modo che puntino all'installazione di Python.
Ri: Come configurare Python per JMP 14?Ciao Paul,
Sto solo cercando di inviare un datatable a Python. Tuttavia, tutte le colonne finiscono in una colonna stringa con le colonne effettive separate da \t (vedi immagine). Hai idea di cosa va storto qui? Hai bisogno di una versione speciale di Pandas (o una versione speciale di matplotlib, poiché anche questa causa un errore)?
Per quanto riguarda la configurazione di Python, sarebbe fantastico se si potesse selezionare un ambiente conda da utilizzare.

Saluti
Gerd
Ri: Come configurare Python per JMP 14?CIAO @Rob128 ,
L'uso di una connessione completa a 2 vie a Python attraverso un'installazione locale di Python che consente a JMP di inviare dati a Python, eseguire codice Python da uno script JSL,
restituire dati e risultati dai programmi Python ed esplorare in modo interattivo i risultati Python in JMP è stato introdotto in JMP 14.
Come hai dimostrato utilizzando JMP 13 (con Esegui programma) puoi controllare un programma esterno utilizzando stdin e stdout.
I commenti di @Paul_Nelson si riferiscono all'implementazione JMP 14 della connessione completa a 2 vie a Python e non attraverso Eseguire il programma.
HTH,
Stan
Ri: Come configurare Python per JMP 14?Penso che lo sia, perché il mio .py che è solo una stampa di Hello World funziona con questo 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>
E il registro:
//:*/
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
"
Ri: Come configurare Python per JMP 14?Pensavo che l'interfaccia Python non fosse disponibile fino a JMP 14.
Ri: Come configurare Python per JMP 14?Ciao Paul,
Grazie per il tuo lavoro, sfortunatamente ho solo la versione 13.0 di JMP. E lavoro con Python versione 3.7.1 senza Anaconda.
Ho tutte le librerie necessarie (numpy, scipy, matplotlib, panda... ).
Sono su Windows 10, ho usato il tuo trucco del "nome variabile" (che è ben spiegato tra l'altro) ma con questo pezzo di codice ho difficoltà...
Dai un'occhiata invece:
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();
Nota: Python Init non è in carattere blu.
Viene visualizzata la finestra di registro:
Nome non risolto: Python Init nell'accesso o nella valutazione di 'Python Init', Python Init (Utilizza la versione 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();
Grazie per aver letto 
Robin
Ri: Come configurare Python per JMP 14?Naturalmente, dopo aver pubblicato, trovo un modo migliore, ma comporta l'impostazione di una variabile di ambiente.JMP 14 sta cercando una variabile di ambiente.È il sys.path che ho descritto nel post precedente, tuttavia è necessario impostarlo come elenco di percorsi JSL.Su Windows 10, devi andare su proprietà del sistema, Impostazioni di sistema avanzate, Variabili d'ambiente e creare una nuova variabile d'ambiente.
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"}
Che quindi consente questo 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();
Per dare l'atteso
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

Ri: Come configurare Python per JMP 14?Per prima cosa voglio scusarmi per il problema che stai riscontrando con il supporto Python di JMP.Lo sviluppatore originale della funzionalità Python è andato in pensione alla fine del ciclo di sviluppo di JMP 14. Sto lavorando sul codice per risolvere i problemi in sospeso.
Esistono problemi con la capacità di JMP di individuare Python.Se JMP lo trova da solo sei a posto, di solito se hai solo una versione di Python sul tuo sistema starai bene.Quando fallisce, è difficile risolvere il problema nelle attuali versioni di JMP. Inoltre ci sono differenze tra Windows e Mac nella capacità o nella scarsa capacità di trovare Python. Ho scoperto un paio di bug nel codice che dovrebbero consentirti di specificare dove si trova la tua istanza di Python.
Usa il percorso sys Python( {"",...} ) all'interno di Python Init() funziona su JMP per Mac v14.1 o versione successiva, ma non funziona su JMP 14.0, 14.1 per Windows.
Windows JMP non lo gestisce bene se nel sistema è presente più di una versione di Python. È necessario specificare la versione di Python da utilizzare all'interno di Python Init ( Use Python Version("3.6")); ad esempio per selezionare la versione 3.6.Anche con questa specificazione potrebbero comunque verificarsi errori nel registro nell'individuazione dei moduli che JMP tenta di caricare per fornire l'interoperabilità.Su Mac JMP 14.0 presenterà problemi se è presente più di una versione di Python3. Mac JMP 14.1 risolve questo problema utilizzando la versione più recente di Python 3, anziché eseguire il salvataggio se ce n'è più di una.
Sul mio Mac dove Python 3.6 è installato in /Library/Frameworks/Python.framework, la mia istruzione Python Init() è:
Python Init( Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Usa Python Version("3.6") );
L'istruzione Path() funziona su Mac, ma non su Windows...
Sul mio desktop Windows 10 ho installato Anaconda con Python 3.6 nella mia directory C:\local\anaconda3.
Il seguente script viene eseguito per me, anche se elimina gli avvisi di non trovare i moduli. Per risolvere il problema di caricamento del modulo, la prima cosa che faccio dopo l'init è importare il modulo sys e quindi impostare sys.path sul valore del percorso che verrebbe restituito se si esegue quanto segue all'interno dell'interprete Python, quindi caricare quei moduli all'interno la mia sceneggiatura prima di continuare.
Individuazione del tuo sys.path dall'interprete 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']
>>>
Il mio script modificato:
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();
Con il seguente output nel log
/**********/
# 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
Testato rispetto a JMP 14.1 e allo sviluppo attuale.
Sempre a nome di JMP Development, mi scuso per lo stato grezzo del supporto Python.Abbi pazienza mentre continuiamo a correggere e migliorare questa importante funzionalità. Per favore segnalare problemi trovi e suggerimenti per nuove funzionalità.
Grazie.
Ri: Come configurare Python per JMP 14?Ho installato JMP Pro 14.0 e Anaconda 1.8.7 e riesco a eseguire il codice. il _JMPxx, si riferisce a numpy: np, pandas: pd e matplotlib.pyplot: pp. Sembra che i panda possano essere una dipendenza.
Ricevo un avviso relativo a "Impossibile importare il modulo Python 'matplotlib.pyplot'" la prima volta che eseguo le prime 6 righe di codice, ma se le eseguo nuovamente, nel registro non viene visualizzato alcun errore.