JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)JMP 18 ではネイティブ Python が導入されます。このオープンソースの Python インストールでは、pip ではなく conda が使用されていますが、現在は壊れているようです。
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 カーネルスペックリスト
start /wait /B "" jupyter nbconvert --execute --to notebook --inplace %notebook_file_path%
最初に Python がアクティブ化され、次に Jupyter 内で関数が呼び出されることに注意してください。
次のエラーは JMP 18 でのみ発生し、独自の Python インストール (conda でインストールされた 3.10 ではなく v 3.11) を呼び出すようです。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'
これを回避する方法が不明です。何かアイデアはありますか?
自動化とスクリプトウィンドウズRe: 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 では動作しなくなる可能性があります。
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)確かに、いつかはPredictor Explainerアドインを書き直す必要があるでしょう。
主な違いは、JMP 18 は pip を使用するのに対し、pyJMP は conda パッケージを使用することです。
.whl (ホイール)が含まれていない場合でも、コンパイルしなくても特定の OS バイナリが含まれているため、conda の方が有利です。
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)ありがとう、ポール。
私はその課題を理解しており、JMP 18 で行われた取り組みに感謝しています。これが、私たちが PyJMP を開発し、データをやり取りするための一時テキスト ファイルを作成することになった理由です。
それでも、RunProgram() で実行された .bat ファイルが JMP 18 Python env にどのように干渉するのかはわかりません。
何か推測はありますか?
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)問題は、アドインが Python コードを実行する JMP に依存しているかどうかです。
はい、そうだと思います。JMP 18のみ JMP がインストールする Python を使用します。JMP 自体は python311 dll をロードします。そのため、Python コードのいずれかが JMP に Python310.dll をロードする必要があるコードを実行させようとすると、Python311.dll がすでにロードされ、JMP 内でアクティブになっているため、エラーが発生します。python.exe または python3.exe を実行しようとしたときに Run Program() が誤って JMP の Python を見つけることがないように、python.exe の名前を jmp_python.exe に変更しました。そのため、バッチ スクリプトは Python 3.11 実行可能ファイルを実行しようとしないはずです (JMP 18 EA の初期のリリースのいずれかでこれを実行しようとしている場合を除く)。
確認する必要があることの 1 つは、バッチ ファイルで、conda 環境の python310.dll への PATH が、JMP 実行可能ディレクトリへのパスよりも前にあることを確認することです。これは、python311.dll が JMP 実行可能ディレクトリに存在するためです。ただし、Python3.10 が実行されている場合は、python310.dll がロードされると思います。
Re: 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 スクリプト内の現在のディレクトリを変更しました。
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)また、JMP の新しい Python 統合により、おそらく PyJMP は不要になります。PyJMP に依存する他のパッケージやツールは、おそらく新しい Python 統合を使用するように書き直すことができます。
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)驚いたことに、記事に書かれていることにもかかわらず、それは干渉します。
方法はよくわかりませんが、Jupyter は、.bat ファイルが Run Program() 経由で JSL から呼び出された場合にのみ JMP 18 カーネルを検出します。
Re: JMP 18 Python カーネルが miniconda Python のインストールを妨害する (プログラムの実行)JMP 18 では、JMP 18.0 では Python 3.11.5 がインストールされ、JMP 18.0.1 セキュリティ アップデートでは 3.11.9 がインストールされます。これにより、組み込みのジャンプパッケージを提供するために必要な緊密な統合が可能になります。これは、JMP と Python を連携して動作するように構成する際に多くの問題が発生したため、またデスクトップごとに異なる Python インストールの問題を解決するためにも行われました。
JMP 18 では、JMP に付属するディストリビューション以外の Python の実行はサポートされなくなりました。