Ich hatte in der Vergangenheit einige Erfolge mit der Python-Integration, aber nach einer kürzlich erfolgten Neuinstallation habe ich große Probleme damit, sie zum Laufen zu bringen.
Aufbau:
- Ich bin dran JMP Pro 15.2 und Python 3.6.
- Um sicherzustellen, dass die Python-Installation sauber ist, habe ich sie deinstalliert und neu installiert. Es werden keine anderen als die benötigten Module installiert:
- numpy, scipy, pandas, matplotlib, pyqt5 und ihre Abhängigkeiten:
>> 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
Mit diesem Setup kann ich ausführen:
Python Init();
x = 5;
Python Send( x );
Python Submit( "print(x)" );
Python Submit(
"\[
basket = ['apple', 'orange', 'pear']
print(basket)
]\"
);
Python Term();
Wie erwartet verstehe ich 5.0 im Protokoll und a 0 für Python Term ():
5.0
<BR />['apple', 'orange', 'pear']<BR />
0
Wenn ich jetzt mehr als eine einfache Zahl, Zeichenfolge oder Liste drücke, wird folgende Fehlermeldung angezeigt:
Python Init();
x = [5];
Python Send( x );
Python Submit( "print(x)" );
Python Term();
Dies führt zu folgendem Fehler:
Python data type is not supported.
Fast keines der Scripting Index-Beispiele funktioniert. Beispielsweise:
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.
Fehlt mir etwas? JMP scheint Daten zu finden und an Python zu senden, so dass es keine Schwierigkeiten gibt, die Python-Installation zu finden, aber aus irgendeinem Grund funktioniert alles, was mehr als ein einfaches Python-Grundelement ist, nicht.
Aktualisieren:
Ich denke, das Problem ist isoliert Python senden oder Python ausführen als JMP versucht, die Daten an Python zu senden. Das Erstellen der Daten in Python und das Einfügen in JMP funktioniert.
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();
Und es funktioniert gut:
Col1 Col2
0 1 4
1 2 5
2 3 6
[1 2 3]
dt = DataTable("df");
x = [1 2 3];
0
Versuchen Sie, auf JMP 15.2.1 zu aktualisieren, da dieses Problem möglicherweise behoben wurde:
Wenn Sie Python Send () zum Senden von Datentabellen an JMP verwenden, wird kein nicht unterstützter Datentypfehler mehr generiert.