안녕하세요,
Python을 호출하는 JMP 추가 기능이 있습니다(JMP 18.2.2를 사용하고 있으므로 JMP에 통합되어 있음). 그리고 Python 패키지를 설치해야 합니다(아직 설치되지 않은 경우).
따라서 저는 두 가지 질문을 가지고 있습니다.
- 인터넷에 연결되어 있지 않아서 pip install이나 jmp.utils를 사용하여 Python 패키지를 설치할 수 없습니다. JMP의 애드인에 Python 패키지를 하드코딩하여 설치하려면 어떻게 해야 하나요?
- 이미 설치되어 있는지 확인할 수 있나요? 그렇다면 다시 설치하지 않아도 되나요?
현재 저는 다음과 같은 일을 했습니다.
strPathPythonLibs = "C:\Users\Utilisateur\Documents\Sophie\JMP Addin\Python libs";
Python send(strPathPythonLibs);
Python submit( "
import sys, subprocess
subprocess.check_call([
sys.executable, '-m', 'pip', 'install',
'--no-index',
f'--find-links={strPathPythonLibs}',
'numpy', 'pandas', 'scipy'
])
" );
이 문제를 해결하는 방법을 아시나요? sys.executable 함수가 JMP python.exe의 경로를 반환해야 한다는 건 알지만, 어떤 이유에서인지 jmp.exe의 경로가 반환됩니다. JMP에서 python.exe는 어디에 사용되나요?
안녕하세요!
네, sys.executable은 실제로 같은 디렉터리(jmp_python.exe)에 있는 Python 실행 파일 대신 jmp.exe의 경로를 반환합니다. 하지만 pip를 실행하기 전에 일부 환경 변수를 설정해야 하기 때문에 직접 사용하기 어렵습니다.
JMP가 jpip.bat 파일을 자동으로 생성하도록 설정할 수 있습니다. 이 파일은 JMP-Python의 pip 모듈이 제대로 작동하는 데 필요한 모든 환경 변수를 설정합니다.
Python Create JPIP CMD();
jpip.bat 파일을 생성한 후(당연히 한 번만 생성해야 함) 다음과 같이 JSL 스크립트에서 추가 인수와 함께 사용할 수 있습니다.
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!"", "install", "--no-index", "--find-links=\!"path/to/the/wheels\!"", "numpy", "pandas", "scipy"}), Read Function("text"));
이스케이프된 따옴표에 주의하세요. 경로에 공백이 포함될 수 있습니다.
또는 jpip.file을 직접 수정할 수 있습니다(마지막에서 두 번째 행):
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
그러면 jpip.bat 파일만 실행하면 됩니다.
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));