Ho avuto un certo successo con l'integrazione di Python in passato, ma dopo una recente reinstallazione, ho enormi problemi nel farlo funzionare.
Configurazione:
- Sono su JMP Pro 15.2 e Python 3.6.
- Solo per assicurarmi che l'installazione di Python sia pulita, l'ho disinstallata e reinstallata. Non vengono installati altri moduli oltre a quelli necessari:
- numpy, scipy, pandas, matplotlib, pyqt5 e le loro dipendenze:
>> py -3.6 -m pip freeze
cycler==0.10.0
kiwisolver==1.3.1
matplotlib==3.3.4
numpy==1.19.5
pandas==1.1.5
Pillow==8.2.0
pyparsing==2.4.7
PyQt5==5.15.4
PyQt5-Qt5==5.15.2
PyQt5-sip==12.9.0
python-dateutil==2.8.1
pytz==2021.1
scipy==1.5.4
six==1.16.0
Python Init();
Python Submit( "import sys" );
Python Submit( "print(sys.version)" );
Python Term();
3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
0
Con questa configurazione posso eseguire:
Python Init();
x = 5;
Python Send( x );
Python Submit( "print(x)" );
Python Submit(
"\[
basket = ['apple', 'orange', 'pear']
print(basket)
]\"
);
Python Term();
Come previsto, vedo 5.0 nel registro e a 0 per Python Term ():
5.0
<BR />['apple', 'orange', 'pear']<BR />
0
Ora, se inserisco qualcosa di più di un semplice numero, stringa o elenco, ottengo un errore:
Python Init();
x = [5];
Python Send( x );
Python Submit( "print(x)" );
Python Term();
Ciò si traduce nel seguente errore:
Python data type is not supported.
Quasi nessuno degli esempi di Scripting Index funziona. Per esempio:
Names Default To Here( 1 );
Python Init();
a = "abcdef";
d = 3.141;
v = [9 8 7, 6 5 4, 3 2 1];
m = [1 2 3, 4 5 6, 7 8 9];
ml = Python Execute(
{v, m, a, d},
{x, z, a, d},
"\[
import numpy as np
a = np.multiply(v, m) # matrix product
d = np.divide(v, m) # matrix division
z = np.multiply(m, np.linalg.inv(v)) # m * inv(v) called Left division
x = np.multiply(np.linalg.inv(m), v) # inv(m) * v called right division
]\"
);
Show( v, m, ml, x, z, a, d );
Python Term();
Python data type is not supported.
C'è qualcosa che mi manca? JMP sembra trovare e inviare dati a Python bene, quindi non è difficile trovare l'installazione di Python ma per qualche motivo, tutto ciò che è più di una semplice primitiva di Python non funziona.
Aggiornare:
Penso che il problema sia isolato Python Send o Python Execute poiché JMP sta tentando di inviare i dati a Python. La creazione dei dati in Python e l'inserimento in JMP funziona.
Python Init();
Python Submit("\[
df = _JMPpd.DataFrame({"Col1": [1, 2, 3],
"Col2": [4, 5, 6]})
print(df)
x = _JMPnp.array([1,2,3])
print(x)
]\");
dt = Python Get(df);
Show(dt);
dt << New Data View;
x = Python Get(x);
Show(x);
Python Term();
E funziona benissimo:
Col1 Col2
0 1 4
1 2 5
2 3 6
[1 2 3]
dt = DataTable("df");
x = [1 2 3];
0
Prova ad aggiornare a JMP 15.2.1 poiché potrebbe essere stato risolto il problema:
L'utilizzo di Python Send () per inviare tabelle di dati a JMP non genera più un errore di tipo di dati non supportato.
Aggiungendo il supporto per l'invio del tipo bool e None, JMP 15.2 ha interrotto il comando send() per qualsiasi cosa che seguisse il codice bool e None, un singolo "}" è stato lasciato fuori dal codice. JMP 15.2.1 ha corretto la funzionalità di invio. Ci scusiamo per la rottura, a volte le cose scivolano anche con i test unitari. (ora una copertura ancora più completa)