He tenido cierto éxito con la integración de Python en el pasado, pero después de una reinstalación reciente, tengo grandes problemas para que funcione.
Configuración:
- Estoy en JMP Pro 15.2 y Python 3.6.
- Solo para asegurarme de que la instalación de Python esté limpia, la desinstalé y la reinstalé. No se instalan otros módulos que no sean los necesarios:
- numpy, scipy, pandas, matplotlib, pyqt5 y sus dependencias:
>> 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 esta configuración puedo ejecutar:
Python Init();
x = 5;
Python Send( x );
Python Submit( "print(x)" );
Python Submit(
"\[
basket = ['apple', 'orange', 'pear']
print(basket)
]\"
);
Python Term();
Como esperaba, veo 5,0 en el registro y un 0 para Python Term ():
5.0
<BR />['apple', 'orange', 'pear']<BR />
0
Ahora, si presiono algo más que un simple número, cadena o lista, aparece un error:
Python Init();
x = [5];
Python Send( x );
Python Submit( "print(x)" );
Python Term();
Esto da como resultado el siguiente error:
Python data type is not supported.
Casi ninguno de los ejemplos de Scripting Index funciona. Por ejemplo:
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.
¿Se me escapa algo? JMP parece estar encontrando y enviando datos a Python sin problemas, por lo que no es difícil encontrar la instalación de Python, pero por alguna razón, cualquier cosa que sea más que una simple primitiva de Python no funciona.
Actualizar:
Creo que el problema está aislado en Envío de Python o Ejecución de Python ya que JMP está intentando enviar los datos a Python. Crear los datos en Python y ponerlos en JMP funciona.
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();
Y funciona bien:
Col1 Col2
0 1 4
1 2 5
2 3 6
[1 2 3]
dt = DataTable("df");
x = [1 2 3];
0
Intente actualizar a JMP 15.2.1, ya que podría tener una solución para ese problema:
El uso de Python Send () para enviar tablas de datos a JMP ya no genera un error de tipo de datos no admitido.
Al agregar soporte para enviar tipos bool y Ninguno, JMP 15.2 rompió el comando send() para cualquier cosa que siguiera al código bool y Ninguno, un solo '}' quedó fuera del código. JMP 15.2.1 corrigió la funcionalidad de envío. Perdón por la rotura, a veces las cosas fallan incluso con las pruebas unitarias. (ahora cobertura aún más completa)