Estamos en el proceso de migrar nuestra cadena de herramientas a JMP 18. Dado que muchas de las llamadas de JMP Python han quedado obsoletas o modificadas en JMP 18 y estamos usando elementos de Python, estoy intentando solucionar algunos scripts nuestros que funcionan bien. en JMP 17 pero arrojan errores cuando los ejecuto en JMP18.
La resolución de problemas en el foro aquí es un poco difícil ya que no puedo compartir el contenido exacto de nuestros scripts debido a la confidencialidad, pero me parece que el problema principal se produce cuando llamo a una función desde fuera de otro jsl.
Include("./../Functions/doSomeThing.jsl");y ya sea en la llamada del script o en la función en sí, se contiene algún código que llama a Python como, por ejemplo,
Python Submit(
"\[
import scipy.signal
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
print("Python Imports OK")<BR /><BR />doing stuff...
]\"
);Los mensajes de error me hacen pensar que JMP 18 se confunde cuando se trabaja en Python y también tiene funciones JSL como esta.
myFunction = Function({Input, otherInput},
Result = blablabla;
Return(Result);
);en particular si la función no está en el mismo jsl, pero es llamada por include() o por alguna razón, el jsl ya no reconoce el include.
Tengo otros ejemplos de jsl en JMP18 donde la inclusión funciona (sin Python) o Python funciona (sin inclusión), pero la combinación de ambos no parece funcionar para mí en JMP 18 cuando tengo jsls anidados llamándose entre sí.
¿Alguna pista/idea sobre qué podría haber cambiado de JMP 17 a JMP 18 que esté rompiendo mis scripts? ¿Alguien tiene los mismos problemas que yo?
No puedo replicar el problema según la descripción anterior. ¿Puedes crear un par de scripts JSL/Python que demuestren tu problema? Aquí se incluyen mis intentos de recrear según su descripción.
nested_parent.jsl
// nested_parent.jsl
Names Default to Here(1);
Include("./JSL_Functions/nested.jsl");
print( "My Version: " || myVersion() );
JSL_Funciones/nested.jsl
// nested.jsl
Names Default to Here(1);
myVersion = Function({}, {},
Python Execute ({}, {v}, "\[
import jmp
v = jmp.__version__
]\");
Return(v);
);
La ejecución de nested_parent.jsl da como resultado el siguiente resultado.
/*:
//:*/
// nested parent
Names Default to Here(1);
Include("./JSL_Functions/nested.jsl");
print( "My Version: " || myVersion() );
/*:
//:*/
import jmp
v = jmp.__version__
/*:
"My Version: 1.0.0"