你好,
我有一个 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"));