你好,
我有一個 JMP 插件,可以在其中調用 Python(整合到 JMP 中,因為我正在使用 JMP 18.2.2),並且我需要安裝 Python 套件(如果尚未安裝)。
因此我有兩個問題:
- 我沒有網路連接,所以無法使用 pip install 或 jmp.utils 安裝 Python 套件。如何將 Python 套件硬編碼到 JMP 的插件中並安裝它們?
- 我可以檢查它是否已經安裝嗎?如果是,是否可以避免重新安裝它?
目前我已經做了以下工作:
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.exe 的路徑,而不是實際位於同一目錄中的 Python 執行檔 (jmp_python.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"));