JMP 14용 Python을 구성하는 방법은 무엇입니까?저는 Python을 처음 접했기 때문에 쉬운 질문이기를 바랍니다.Python 버전 3.6 및 3.7이 설치되어 있습니다.두 버전 모두에서 numpy, matplotlib, scipy 및 pdfkit을 설치했습니다.그러나 스크립팅 인덱스에서 예제를 실행하려고 하면 로그 창에 오류가 발생합니다.
Python Get 예의 경우:
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
다음과 같은 오류가 발생합니다.
//:*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
/*:
/**********/
# Read a binary file containing doubles into an ndarray
x1 = _JMPnp.fromfile("C:\\Users\\pmroz\\AppData\\Local\\Temp\\eacac6a7-dd5e-4ceb-dcbd0248455fb787.csv", dtype=_JMPnp.float64, count=-1, sep="")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPnp' is not defined
x1 = [1, 2, 3];
x2 = .;
/**********/
# Import a JMP exported .csv file into a Data Frame
dt1 = _JMPpd.read_csv("C:\\Users\\pmroz\\AppData\\Local\\Temp\\8b6475be-aaf0-408b-d1cae4522f253881.csv")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpd' is not defined
Send Expects Scriptable Object in access or evaluation of 'Send' , dt2 << /*###*/New Data View/*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << /*###*/New Data View/*###*/;
Close( dt1 );
Python Term();
내가 무엇을 놓치고 있나요?감사해요.
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?JMP와 Python을 활용하기 위해 몇 가지 작업이 진행되고 있습니다.
1. JMP에는 JSL용 스크립팅 언어와 로그가 있습니다.
* JSL에서 값을 보고 이를 평가하고 로그에서 볼 수 있으며, 데이터 테이블을 만들거나 넣을 수 있고, 데이터베이스에 넣거나 그래픽 출력을 직접 그릴 수도 있습니다.
* 파일에 값을 쓸 수 있습니다.
2. Python은 자체 환경입니다. 위의 a와 b는 Python에서도 마찬가지이지만 Python 문과 프로그램을 사용하면 적용됩니다. JSL의 show가 JSL 값을 표시하는 것처럼 Python의 print( ) 문은 Python 변수를 인쇄합니다.
스크립팅 가이드의 Python Send() 예제에서
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Python 제출("print(x)"); // Python 코드(“print(x)”)를 실행하고 Python에서 볼 수 있는 x 값을 인쇄합니다. 이는 JSL x와 별도의 변수입니다. Python Send(x)까지 Python 측에는 변수 x가 없고 JSL x만 있습니다.
따라서 예를 들어 위의 코드가
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
x = [3,2,1];
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Show( x );
Python Submit(“print(x)”)에서 x는 1, 2 ,3이 됩니다.
하지만 쇼(x)에서는;
서로 다른 두 스크립팅 환경에서 작업한다는 것을 기억해야 하는 3, 2, 1을 얻게 됩니다.
Python 없이 JSL의 기능을 탐색하는 데 익숙해지는 것이 좋습니다. JSL 작업을 이해하는 데 필요한 수많은 JSL 샘플과 자료가 많이 있습니다. 그리고 JMP 외부에서 Python 프로그래밍을 다시 살펴보면 튜토리얼 사이트를 포함하여 인터넷에 셀 수 없을 정도로 많은 예제가 있습니다. 각각에 대해 잘 알고 있으면 각 언어의 강점과 약점에 대한 통찰력을 얻을 수 있습니다. 왜냐하면 어떤 계산을 어디서 수행할지 결정해야 하기 때문입니다. 초기 데이터만 전달하고 결과를 반환하는 등 모든 작업을 Python에서 수행할 수 있습니다. 또는 JSL에서 대부분의 작업을 수행할 수 있습니다. 또는 Python을 호출하여 JSL보다 Python에서 수행하기 더 쉬운 일부 계산이나 처리를 수행하거나 그 사이의 혼합을 수행하여 JSL에서 대부분의 작업을 수행할 수 있습니다.
폴
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕 폴,
JSL 파일에서 Python으로 Python으로 제출한 내용을 실제로 어떻게 볼 수 있나요? 나는 이 작업을 수행한 경험이 없지만 예제로 x1을 보내고 Python 스크립팅 창으로 이동하면 x1이 저장되지 않습니다. 이에 대한 단계별 문서가 있습니까?
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕하세요, 저도 CETPA INFOTECH에서 Python을 배우기 시작했습니다. 아직 지식이 많지는 않지만 내가 알고 사용한 모든 것을 여기에서 공유합니다.
Unix/Linux에서 사용할 수 있는 압축 소스 코드를 다운로드하려면 링크를 따르세요.
파일을 다운로드하고 추출하세요.
일부 옵션을 사용자 정의하려면 모듈/설정 파일을 편집하세요.
./configure 스크립트를 실행합니다.
만들다.
설치해 보세요.
Paul의 답변을 읽은 후 나는 간략하게 이해했으며 그의 솔루션에 동의합니다.Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕 폴,
나는 이미 작동하도록 했습니다(적어도 한 PC에서는 numpy를 가져오려고 할 때 다른 PC에서는 오류가 발생했습니다). 나는 이 주제에 대해 작업할 때 다양한 Conda 환경 중에서 쉽게 선택할 수 있는 방식으로 설정할 수 있다고 제안하고 싶었습니다.
데이터 테이블을 pandas로 전송할 때 발생하는 문제가 알려진 문제입니까, 아니면 제가 뭔가 잘못하고 있습니까?
감사해요
게르드
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?Conda 설치를 가리키도록 Python Init() 및/또는 시스템 환경 변수를 설정해야 합니다. 이 커뮤니티 게시물에 대한 이전 답변을 참조하세요. Python Init() 내에서 매개변수를 설정하고 Python 설치를 가리키도록 환경 변수를 설정하는 예가 있습니다.
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕 폴,
저는 데이터 테이블을 Python으로 보내려고 합니다. 그러나 모든 열은 실제 열이 \t로 구분된 하나의 문자열 열로 끝납니다(그림 참조). 여기서 무엇이 잘못되었는지 아시나요? 특별한 pandas 버전(또는 오류가 발생하는 특별한 matplotlib 버전)이 필요합니까?
Python 구성과 관련하여 사용해야 하는 conda 환경을 선택할 수 있다면 좋을 것입니다.

문안 인사
게르드
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕 @Rob128 ,
Python에 대한 완전한 양방향 연결 사용 ~을 통해 JMP가 Python으로 데이터를 보내고, JSL 스크립트에서 Python 코드를 실행할 수 있도록 하는 Python의 로컬 설치,
Python 프로그램에서 데이터와 결과를 반환하고 JMP에서 Python 결과를 대화형으로 탐색하는 기능은 JMP 14에 도입되었습니다.
JMP 13(프로그램 실행 포함)을 사용하여 시연한 것처럼 stdin 및 stdout을 사용하여 외부 프로그램을 제어할 수 있습니다.
의 의견 @Paul_Nelson Python에 대한 완전한 양방향 연결의 JMP 14 구현을 참조하는 것이지 ~을 통해 프로그램을 실행합니다.
HTH,
스탠
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?하지만 Hello world의 인쇄인 내 .py가 다음 jsl과 작동하기 때문에 그렇습니다.
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<GET version=""></GET>
그리고 로그는 다음과 같습니다.
//:*/
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<Get Version;
/*:
"Hello World
"
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?JMP 14까지는 Python 인터페이스를 사용할 수 없다고 생각했습니다.
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?안녕 폴,
노고에 감사드립니다. 안타깝게도 JMP 버전 13.0만 사용하고 있습니다. 그리고 저는 Anaconda 없이 Python 버전 3.7.1로 작업합니다.
필요한 모든 라이브러리(numpy, scipy, matplotlib, panda...)가 있습니다. ).
저는 Windows 10을 사용하고 있습니다. "변수 이름" 트릭을 수행했지만(잘 설명되어 있습니다) 이 코드로 인해 어려움을 겪고 있습니다...
대신 살펴보십시오.
Names Default To Here( 1 );
Python Init(Use Python Version("3.7.1"));
/*Python Submit("\[
import sys
sys.path=['', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
*/
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
비고: Python Init은 파란색 글꼴이 아닙니다.
로그 창이 표시됩니다:
이름이 해결되지 않음: 'Python Init' 액세스 또는 평가 시 Python Init , Python Init( Python 버전 사용( "3.7.1" ) ) /*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init( Use Python Version( "3.7.1" ) ) /*###*/;
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
읽어 주셔서 감사합니다 
남자 이름
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?물론 게시한 후에 더 나은 방법을 찾았지만 여기에는 환경 변수 설정이 포함됩니다.JMP 14는 환경 변수를 찾고 있습니다.이전 게시물에서 설명한 sys.path 이지만 JSL 경로 목록으로 설정해야 합니다.Windows 10에서는 시스템 속성, 고급 시스템 설정, 환경 변수로 이동하여 새 환경 변수를 만들어야 합니다.
Variable Name: Python sys path
Variable Value: {"", "C:\\local\\anaconda3\\python36.zip", "C:\\local\\anaconda3\\DLLs",
"C:\\local\\anaconda3\\lib", "C:\\local\\anaconda3", "C:\\local\\anaconda3\\lib\\site-packages",
"C:\\local\\anaconda3\\lib\\site-packages\\win32",
"C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib",
"C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin"}
그런 다음 이 스크립트를 허용합니다.
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
기대치를 주기 위해
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?먼저 JMP의 Python 지원과 관련하여 겪고 있는 문제에 대해 사과드리고 싶습니다.Python 기능의 원래 개발자는 JMP 14 개발 주기가 끝나면 은퇴했습니다. 저는 코드를 통해 미해결 문제를 해결하기 위해 노력하고 있습니다.
Python을 찾는 JMP의 기능에 문제가 있습니다.JMP가 저절로 이를 발견하면 아무 문제가 없습니다. 일반적으로 시스템에 Python 버전이 하나만 있으면 괜찮습니다.실패하면 현재 JMP 릴리스에서 문제를 해결하기가 어렵습니다. 또한 Windows와 Mac 간에는 Python을 찾는 데 얼마나 능숙하거나 열악한지에 차이가 있습니다. Python 인스턴스의 위치를 지정할 수 있도록 하는 코드에서 몇 가지 버그를 발견했습니다.
Python Init() 내에서 Python sys 경로({"",...} )를 사용하면 Mac용 JMP v14.1 이상에서 작동하지만 Windows용 JMP 14.0, 14.1에서는 작동하지 않습니다.
시스템에 둘 이상의 Python 버전이 있는 경우 Windows JMP는 이를 제대로 처리하지 못합니다. Python Init 내에서 사용할 Python 버전을 지정해야 합니다( Python 버전("3.6") 사용). 예를 들어 3.6 버전을 선택합니다.이를 지정하더라도 JMP가 상호 운용성을 제공하기 위해 로드하려고 시도하는 모듈을 찾을 때 로그에 오류가 발생할 수 있습니다.Mac에서 Python3 버전이 2개 이상인 경우 JMP 14.0에 문제가 발생합니다. Mac JMP 14.1에서는 Python 3이 둘 이상인 경우 구제하는 대신 가장 높은 버전의 Python 3을 사용하여 이 문제를 해결합니다.
Python 3.6이 /Library/Frameworks/Python.framework에 설치된 Mac에서 Python Init() 문은 다음과 같습니다.
Python Init( Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Python 버전 사용("3.6") );
Path() 문은 Mac에서는 작동하지만 Windows에서는 작동하지 않습니다.
내 Windows 10 데스크톱에서는 C:\local\anaconda3 디렉터리에 Python 3.6이 포함된 Anaconda를 설치했습니다.
모듈을 찾을 수 없다는 경고가 표시되더라도 다음 스크립트가 실행됩니다. 모듈 로딩 문제를 해결하기 위해 init 이후 가장 먼저 하는 일은 sys 모듈을 가져온 다음 Python 인터프리터 내에서 다음을 수행할 때 반환될 경로 값으로 sys.path를 설정한 다음 해당 모듈을 내에서 로드하는 것입니다. 계속하기 전에 내 스크립트를 확인하세요.
Python 인터프리터에서 sys.path 찾기.
C:\local\anaconda3>.\python.exe
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print (sys.path)
['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
>>>
내 수정된 스크립트:
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
Python Submit("\[
import sys
sys.path=['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
x1 = [1, 2, 3];
Python Send( x1 );
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
Python Term();
로그에 다음 출력이 표시됩니다.
/**********/
# Import the numpy module for array and matrix support
import numpy as _JMPnp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'numpy'
/**********/
# Import the scipy module for scientific computing support
import scipy as _JMPsp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'scipy'
/**********/
# Import the pandas module for Series/Data Frame support
import pandas as _JMPpd
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'pandas'
/**********/
# Import the matplotlib module for 2D plotting
import matplotlib as _JMPmpl
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Import the matplotlib.pyplot module for plots
import matplotlib.pyplot as _JMPpp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpp' is not defined
Unable to import the 'numpy' Python module
Unable to import the 'scipy' Python module
Unable to import the 'pandas' Python module
Unable to import the 'matplotlib' Python module
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0
JMP 14.1 및 현재 개발 버전에 대해 테스트되었습니다.
다시 한 번 JMP Development를 대표하여 Python 지원의 초기 상태에 대해 사과드립니다.이 중요한 기능을 지속적으로 수정하고 개선하는 동안 양해해 주시기 바랍니다. 제발 문제 보고 새로운 기능을 찾고 제안합니다.
감사해요.
Re: JMP 14용 Python을 구성하는 방법은 무엇입니까?JMP Pro 14.0과 Anaconda 1.8.7이 설치되어 있고 해당 코드를 실행할 수 있습니다. _JMPxx는 numpy: np, pandas: pd 및 matplotlib.pyplot: pp를 나타냅니다. 팬더가 종속성일 수 있는 것 같습니다.
코드의 처음 6줄을 처음 실행할 때 "'matplotlib.pyplot' Python 모듈을 가져올 수 없습니다"라는 경고가 표시되지만 다시 실행하면 로그에 오류가 표시되지 않습니다.