JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)JMP 18 引入了原生 Python。此开源 Python 安装使用 conda 而不是 pip,但现在似乎有问题。
https://github.com/industrial-data/pyJMP/
pyJMP 的工作方式是使用RunProgram()执行以下 bat 文件。
set JMP_PYTHON_PTH=C:\ProgramData\miniforge_JMP
CALL %JMP_PYTHON_PTH%\Scripts\activate.bat %JMP_PYTHON_PTH%
SET current_path=%~dp0
echo %current_path:~0,-1%
SET notebook_file=jmp_addin_minimum_features.ipynb
SET notebook_file_path=%current_path%%notebook_file%
echo %notebook_file_path%
python --version jupyter kernelspec 列表
start /wait /B "" jupyter nbconvert --execute --to notebook --inplace %notebook_file_path%
请注意,首先激活 Python,然后我们调用 Jupyter 内部的函数。
以下错误仅发生在 JMP 18 中,它似乎调用了自己的 Python 安装(v 3.11,而不是使用 conda 安装的 3.10)。如果从 Windows 资源管理器或其他 cmd 执行该 .bat 文件,代码将按预期工作。
C:\Program Files\JMP\JMPPRO\18>set JMP_PYTHON_PTH=C:\ProgramData\miniforge_JMP
C:\Program Files\JMP\JMPPRO\18>CALL C:\ProgramData\miniforge_JMP\Scripts\activate.bat C:\ProgramData\miniforge_JMP
C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer
C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer\jmp_addin_minimum_features.ipynb
<FONT color="#008000"><U><STRONG>Python 3.10.10 可用内核:python3 C:\ProgramData\miniforge_JMP\share\jupyter\kernels\python3</STRONG></U></FONT>
[NbConvertApp] Converting notebook C:\Users\MrX\AppData\Roaming\JMP\JMP\Addins\Predictor_Explainer\jmp_addin_minimum_features.ipynb to notebook
[NbConvertApp] ERROR | Module use of <FONT color="#FF0000"><U><STRONG>python311.dll</STRONG></U> </FONT>conflicts with this version of Python.
Traceback (most recent call last):
File \!"C:\ProgramData\miniforge_JMP\lib\site-packages\traitlets\traitlets.py\!", line 656, in get
value = obj._trait_values[self.name]
KeyError: 'kernel_dirs'
目前还不清楚如何避免这种情况。有什么想法吗?
自动化和脚本视窗回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)请阅读https://community.jmp.com/t5/JMPer-Cable/JMP-is-Pythonic-Enhanced-Python-Integration-in-JMP-18/ba-p/723997 。
经过某些修改后,上面列出的 PyJMP 包很可能无法与 v18 一起使用。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)没错,我们必须在某个时候重写我们的预测解释器插件。
主要区别在于 JMP 18 使用 pip 而 pyJMP 使用 conda 包。
对于某些不包含.whl(轮子)的情况,conda 仍然具有优势,因为它包含特定的操作系统二进制文件而无需编译。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)谢谢,保罗。
我理解这一挑战,并赞赏 JMP 18 所做的努力。这就是我们最终开发 PyJMP 并编写临时文本文件来传递数据的原因。
不过,我不明白用 RunProgram() 执行的 .bat 文件如何干扰 JMP 18 Python 环境。
您有什么猜测吗?
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)问题是,您的插件是否依赖于 JMP 运行 Python 代码?
我认为是的。仅限JMP 18 使用 JMP 安装的 Python。JMP 本身会加载 python311 dll。因此,如果您的任何 Python 代码尝试让 JMP 运行需要加载 Python310.dll 的代码,您将收到错误,因为 Python311.dll 已在 JMP 中加载并处于活动状态。我们将 python.exe 重命名为 jmp_python.exe,以防止 Run Program() 在尝试运行 python.exe 或 python3.exe 时意外找到 JMP 的 Python,因此您的批处理脚本不应尝试运行 Python 3.11 可执行文件(除非您尝试在早期的 JMP 18 EA 版本之一上运行它)。
您可能需要注意的一件事是,确保在批处理文件中,conda 环境的 python310.dll 的 PATH 位于 JMP 可执行文件目录的路径之前,因为 python311.dll 位于 JMP 可执行文件中。但是,我认为如果您的 Python3.10 正在执行,它将加载 python310.dll。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)按照 Paul 分享的想法,我找到了问题的根源(感谢!)。
RunProgram() 启动并将 JMP 安装文件夹包含在 PATH 中。
C:\Program Files\JMP\JMP\18
C:\Program Files\JMP\JMPPRO\18
该文件夹包含jmp_python.exe,还包含python311.dll和其他文件。
因此,为了避免出现问题,我更改了 .bat 脚本中的当前目录。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)此外,JMP 中新的 Python 集成可能消除了对 PyJMP 的需求。其他依赖 PyJMP 的软件包和工具可能可以重写以使用新的 Python 集成。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)令我惊讶的是,尽管文章中写了这些,但它确实存在干扰。
我不确定如何操作,但是当仅通过 Run Program() 从 JSL 调用 .bat 文件时,Jupyter 会找到 JMP 18 内核。
回复:JMP 18 Python 内核干扰 miniconda Python 安装(运行程序)JMP 18 安装 Python 3.11.5 和 JMP 18.0,以及 3.11.9 和 JMP 18.0.1 安全更新。这使我们能够提供内置跳转包所需的深度集成。这样做也是因为许多人在将 JMP 和 Python 配置为协同工作时遇到了许多问题,以及解决了不同桌面的 Python 安装不同的问题。
JMP 18 不再支持运行除 JMP 提供的分发版之外的 Python。