Wir sind dabei, unsere Toolchain in JMP 18 zu portieren. Da viele der JMP-Python-Aufrufe in JMP 18 veraltet/geändert sind und wir Python-Elemente verwenden, versuche ich, einige unserer Skripte zu beheben, die in JMP 17 einwandfrei funktionieren, aber Fehler verursachen, wenn ich sie auf JMP18 ausführe.
Die Problemlösung im Forum hier ist etwas schwierig, da ich den genauen Inhalt unserer Skripte aus Vertraulichkeitsgründen nicht teilen kann, aber es scheint mir, dass das Hauptproblem auftritt, wenn ich eine Funktion von außerhalb eines anderen JSL aufrufe
Include("./../Functions/doSomeThing.jsl");und entweder im aufrufenden Skript oder in der Funktion selbst ist Code enthalten, der Python aufruft, wie zum Beispiel:
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...
]\"
);Die Fehlermeldungen lassen mich vermuten, dass JMP 18 entweder verwirrt ist, wenn man in Python arbeitet und auch JSL-Funktionen wie diese hat
myFunction = Function({Input, otherInput},
Result = blablabla;
Return(Result);
);insbesondere wenn sich die Funktion nicht in derselben JSL befindet, sondern von include() aufgerufen wird oder die JSL den Include aus irgendeinem Grund nicht mehr erkennt.
Ich habe andere JSL-Beispiele in JMP18, bei denen der Include funktioniert (ohne Python) oder der Python funktioniert (ohne Include), aber die Kombination aus beidem scheint bei mir in JMP 18 nicht zu funktionieren, wenn ich verschachtelte JSLs habe, die sich gegenseitig aufrufen.
Irgendwelche Hinweise/Ideen, was sich von JMP 17 zu JMP 18 geändert haben könnte, wodurch meine Skripte nicht mehr funktionieren? Hat jemand die gleichen Probleme wie ich?
Ich kann das Problem anhand der obigen Beschreibung nicht reproduzieren. Können Sie ein Paar JSL-/Python-Skripte erstellen, die Ihr Problem veranschaulichen? Hier sind meine Versuche, es anhand Ihrer Beschreibung nachzubilden.
verschachtelte_übergeordnete.jsl
// nested_parent.jsl
Names Default to Here(1);
Include("./JSL_Functions/nested.jsl");
print( "My Version: " || myVersion() );
JSL_Funktionen/nested.jsl
// nested.jsl
Names Default to Here(1);
myVersion = Function({}, {},
Python Execute ({}, {v}, "\[
import jmp
v = jmp.__version__
]\");
Return(v);
);
Das Ausführen von nested_parent.jsl führt zu der folgenden Ausgabe.
/*:
//:*/
// 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"