JSL에서 Python 스크립트 실행내 JSL 코드에서 Python 스크립트를 실행하고 싶습니다. 그렇게 하는 가장 좋은 방법은 무엇입니까? 감사합니다
Re: JSL에서 Python 스크립트 실행업데이트: JMP 14.0(15.0에서 훨씬 개선됨) 이후 JSL에서 Python을 실행하는 가장 좋은 방법은 이제 Python Init(), Python Submit() 등 명령에 구현된 JMP 인터페이스를 사용하는 것입니다.
자세한 내용은 여기를 참조하세요:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
Anaconda 가상 환경 실행을 지원하는 래퍼의 경우 다음을 확인하세요.
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Re: JSL에서 Python 스크립트 실행x = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
그런 다음 반대 작업을 수행하려면 Python 스크립트에서 JSL을 실행하세요.이것은 Mac, JMP 13.2에서 작동합니다(그리고 이것은 jsl이 아닌 Python입니다).
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
open 인수에는 응용 프로그램 경로, 공백 한 개, 열려는 경로/파일이 포함됩니다.
아마도 가지고 있는 것이 중요할 것입니다
//!
스크립트의 첫 번째 행에 자동으로 실행되도록 합니다. 그리고 마지막 줄에 다음을 포함하세요.
Quit();
그러면 os.sytem이 시작한 JMP 인스턴스가 닫힙니다.
Re: JSL에서 Python 스크립트 실행Oracle v12 데이터베이스와 통신하기 위해 Oracle 11용 Oracle의 64비트 ODBC 드라이버를 사용하고 있습니다. 나는 당신이 언급한 것과 같은 행동을 본 적이 없습니다. 나는 이것을 JMP 11과 12에 사용했습니다. 아직 JMP 13으로 완전히 전환되지 않았습니다. v13.1.0은 V13.0이 CLOB를 읽을 수 없는 버그를 수정했습니다.
Microsoft의 Oracle ODBC 드라이버를 작동시킬 수 없었습니다.
행운을 빌어요!
Re: JSL에서 Python 스크립트 실행현재 ODBC 드라이버를 사용하고 있는데 신뢰할 수 없습니다. 나는 그것이 JMP라고 생각하지 않지만 JMP 12-13과 oracle 11-12에서 전환하면 확실히 applecart가 혼란스러워졌습니다. 안정적으로 실행하려면 5개의 쿼리마다 데이터베이스 연결을 닫았다가 다시 열어야 한다는 것을 알고 있습니다.
Re: JSL에서 Python 스크립트 실행ODBC 드라이버를 사용하여 JMP로 직접 데이터를 읽는 것이 더 간단하고 빠를 수 있습니다. 당신의 SQL 데이터베이스는 무엇입니까? 저는 Oracle에 대한 많은 경험을 갖고 있으며 이에 대해 도움을 드릴 수 있습니다.
Re: JSL에서 Python 스크립트 실행사용
txt = runprogram( ... readfunction("텍스트"));
Python 프로그램이 stdout(print 문 등)을 생성하면 runProgram의 결과로 JSL로 돌아옵니다. JSL은 Python 프로그램이 종료될 때까지 계속되지 않습니다. readfunction("텍스트") . 다음과 같은 것을 인쇄하고 싶을 수도 있습니다.
파일명.dat,100
그러면 JSL은 해당 파일에 100줄의 데이터가 있다는 것을 알 수 있습니다. 또는 오류 메시지를 인쇄하고 데이터베이스를 사용할 수 없는 경우 이를 처리합니다.
(JSL에는 더 적절할 수 있는 몇 가지 SQL 기능도 있습니다. @Eric_Hill )
Re: JSL에서 Python 스크립트 실행크레이그,
빠른 응답에 감사드립니다. 내가 하려는 것은
Python 프로그램을 실행하고 Python 프로그램이 종료될 때까지 JSL 실행을 일시 중지합니다.
종료됩니다. Python 프로그램은 내가 원하는 파일에 출력을 씁니다.
그런 다음 JSL을 통해 열고 검색합니다. 저는 기본적으로 Python을 사용하여
내 JSL 코드에서 사용할 데이터베이스에서 데이터를 검색합니다. 순서는 다음과 같습니다.
BE:
1. JSL을 실행하고 SQL 쿼리를 준비하면
파이썬 스크립트를 만듭니다.
2. Python 프로그램을 실행하고 JSL을 일시 중지합니다.
삼. Python이 완료되면 JSL이 계속 진행되어 파일이 열립니다.
파이썬이 그것을 저장하고 처리했습니다.
Re: JSL에서 Python 스크립트 실행readFunction은 RunProgram에게 Python 프로그램의 출력(stdout에 기록된 데이터)을 처리하는 방법을 알려줍니다. 실제 JSL 함수를 제공하는 경우 기능 예에서와 같이 JSL과 Python이 독립적으로 실행되고 JMP가 유휴 상태일 때마다 JSL 함수를 호출하여 Python에서 더 많은 출력을 검색할 수 있습니다. 이는 Python 프로그램이 영원히 실행되고 무한한 출력 스트림을 만드는 경우 유용할 수 있습니다. 여기에 게시된 다른 예에서는 다음을 사용합니다. readfunction("텍스트") , 이는 Python 프로그램(물론 종료되어야 함)의 모든 출력을 다시 가져오는 간단한 방법입니다. runProgram 함수의 결과로 출력이 다시 나타납니다.
runProgram이 호출할 함수를 제공하는 경우 JSL 변수에 runprogram 객체도 유지하여 JMP와 Python 간의 연결이 너무 빨리 끊어지지 않도록 해야 합니다. 객체 = 프로그램 실행(...)
그만큼 이것 readFunction의 매개변수는 객체 위의 변수. <
편집: 쓰기 기능의 출력은 JMP 로그로 이동합니다. 거기에서 결과를 확인하세요.
Re: JSL에서 Python 스크립트 실행'프로그램 실행' 명령에 어려움을 겪고 있습니다. 아래 줄은 명령 프롬프트에서 제대로 작동합니다.
c:\mycompany\anaconda3\python.exe "c:\users\myuserid\temp\pythonsqltest.py"
다음 스크립트를 실행하여 실행하려고 합니다.
Names Default To Here( 1 );
RP = RunProgram(
Executable( "c:\mycompany\anaconda3\python.EXE" ),
Options( {"c:\users\myuserid\temp\pythonsqltest.py"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
나는 여기서 'ReadFunction'이 수행하는 역할을 실제로 이해하지 못한다고 생각합니다. 내가 무엇을 놓치고 있나요?
Re: JSL에서 Python 스크립트 실행다음은 제가 가지고 놀던 예입니다.
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy는 트위터용 Python 패키지입니다. 이 예에서는 JSL이 계속되기 전에 Python 프로그램이 시작되고, 출력을 생성하고, 종료될 것으로 예상합니다. RunProgram을 사용하는 다른 방법이 있습니다.
Re: JSL에서 Python 스크립트 실행사용
프로그램 실행()
기능.
자세한 내용은 다음을 참조하세요.
도움말==>Indes 스크립팅==>RunProgram