저희는 툴체인을 JMP 18로 이식하는 과정에 있습니다. 많은 JMP 파이썬 호출이 JMP 18에서 더 이상 사용되지 않거나 변경되었고 저희는 파이썬 요소를 사용하고 있기 때문에 JMP 17에서는 잘 작동하지만 JMP18에서 실행하면 오류가 발생하는 일부 스크립트의 문제를 해결하려고 합니다.
여기 포럼에서 문제를 해결하는 것은 기밀성 때문에 스크립트의 정확한 내용을 공유할 수 없기 때문에 약간 어렵지만, 제 생각에는 주요 문제는 다른 jsl 외부에서 함수를 호출할 때 발생하는 것 같습니다.
Include("./../Functions/doSomeThing.jsl");스크립트 호출이나 함수 자체에 Python을 호출하는 코드가 포함되어 있습니다. 예를 들어,
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...
]\"
);오류 메시지를 보면 JMP 18이 Python에서 작업할 때 혼동을 일으키고 이와 같은 JSL 함수도 사용하는 것 같습니다.
myFunction = Function({Input, otherInput},
Result = blablabla;
Return(Result);
);특히 해당 함수가 동일한 jsl에 없지만 include()에 의해 호출되거나 어떤 이유로든 jsl이 더 이상 include를 인식하지 못하는 경우가 있습니다.
JMP18에는 include가 작동(python 없이)하거나 python이 작동하는(include 없이) 다른 jsl 예제가 있지만, 서로를 호출하는 중첩된 jsl이 있을 때 JMP 18에서는 두 가지를 결합한 방식이 작동하지 않는 듯합니다.
JMP 17에서 JMP 18로 바뀌면서 내 스크립트를 망가뜨린 것에 대한 힌트/아이디어가 있나요? 나와 같은 문제를 겪고 있는 사람이 있나요?
위의 설명에 따르면 문제를 재현할 수 없습니다. 문제를 보여주는 JSL/Python 스크립트 한 쌍을 만들어 주시겠습니까? 여기에 귀하의 설명을 기반으로 재현하려는 시도가 포함되어 있습니다.
중첩된 부모.jsl
// nested_parent.jsl
Names Default to Here(1);
Include("./JSL_Functions/nested.jsl");
print( "My Version: " || myVersion() );
JSL_Functions/중첩.jsl
// nested.jsl
Names Default to Here(1);
myVersion = Function({}, {},
Python Execute ({}, {v}, "\[
import jmp
v = jmp.__version__
]\");
Return(v);
);
nested_parent.jsl을 실행하면 다음과 같은 출력이 생성됩니다.
/*:
//:*/
// 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"
@Feli - 안녕하세요! 이 문제에 대해서는 기술 지원( support@jmp.com )에 문의하는 게 좋을 것 같습니다.