I'm experiencing issues integrating Python with JMP 17. Despite following the recommended steps, JMP crashes every time I run Python Init. Here are the details:
システム設定:
- JMP バージョン: 17
- Python バージョン: 3.9.13 (64 ビット) (v3.13.1 も試しました)
- OS: Windows 10 (64ビット)
実行された手順:
- Python 3.9.13 をインストールし、PATH に追加しました。
- 必要な Python パッケージをインストールしました: numpy、pandas、matplotlib、scipy、PyQt5。
- Set the environment variable
JMP_PYTHON_MODULE_PATH to C:\Program Files\Python39\python39.dll. - コマンドプロンプト経由で Python のインストールとパッケージのインストールを検証しました。
- Python を初期化するために簡単な JSL スクリプトを実行してみました:
// Initialize Python with the specified path
Python Init( Path( "C:\\Program Files\\Python39\\python39.dll" ) );
// Simple Python code to test initialization
python_code = "
print('Hello from Python!')
";
// Run the Python code
Python Submit(python_code);
// Close the Python session
Python Term();問題: JMP crashes and closes immediately upon running Python Init.
実行されたトラブルシューティング手順:
- Python パスと DLL ファイルの場所を確認しました。
- 競合を避けるために他の Python バージョンをアンインストールしました。
- JMP 17を再インストールしました。
- JMP ログでエラー メッセージを確認しました (何も見つかりません)。
これらの努力にもかかわらず、問題は解決しません。この問題に遭遇した人は他にもいますか、または解決方法について何か提案はありますか?
ご協力ありがとうございます!
JMP18 にアップデートする可能性はありますか。
アップデートはすべてのユーザーに無料で提供されます。
多くの素晴らしい改善に加えて、JMP + Python は今では素晴らしい連携を実現しています : )
自分でアップグレードできればいいのですが、私が勤めている会社では、新しいソフトウェア アップデートが常に少なくとも 1 年遅れで提供されます。
JMP サポートに直接連絡して、トラブル チケットを発行します。
お問い合わせ
他の人が述べているように、JMP 18 では Python の使用がはるかに簡単になります。JMP は、JMP ですぐに使用できるプライベートの組み込み Python 3.11 をインストールします。JMP 14-17 で Python を動作させるのは難しい場合があり、これが JMP に Python が付属するようになった主な理由です。
まず環境変数JMP_PYTHON_MODULE_PATHを削除します。
次に、Python.org と Anaconda のどちらを実行していますか? Python.org を使用してください。
3 番目に、JMP 17 は 64 ビットなので、64 ビット Python を使用する必要があります。
Anaconda を動作させることはできましたが、デバッガーで JMP ソース コードをステップ実行して Python Init を適切に構成することによってのみ可能でした。
また、JMP 14-17 は仮想環境 ( venv) で動作するように設計されていません。
Python Connect() 関数と Python Init() 関数は、問題を解決できるさまざまなパラメータを受け取ります。
最も簡単に試せるのは次の方法です:
Python Init ( Use Python Version("3.9") );
すでに試した内容:
Python Init (
Path("C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll") <BR />);
最後に、「ブルート フォース」の方法は、dll へのパスと、完全な Python sys.path の両方を JSL リストとして指定することです。コマンド ラインから Python を起動し、以下を実行します。
import sys
print ( sys.path )
私のマシンでは次のようにします:
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\_me_\\panels\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\Pythonwin']
>>>
これで、Python リスト [...] を取得し、そこから JSL リストを作成して、以下に示すように Python Init() に渡すことができます。以下のスクリプトは、しばらく前に実行したスクリプトから貼り付けたものであることから、2 つが異なります。上記の Python を今日実行しました。疑わしい場合は、Python 自体が sys.path に返すものをすべて使用してください。
Names Default To Here( 1 );
Python Init(
Path("C:\\Users\\_me__\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll"),
Python Sys Path(
{
"",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\DLLs",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39",
"C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages"
}
)
);
Python Submit("\[
import sys
print(sys.path)
print(sys.version)
]\");
x1 = [1, 2, 3];
Python Send( x1 );
x1 = [3,2,1];
x2 = Python Get( x1 );
Show( x1, x2 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt1 );
dt2 = Python Get( dt1 );
dt2 << New Data View;
Close( dt1 );
//Python Term();
Python Submit("\[
print(dt1)
]\");
さらに... JMP 18 にアップグレードします。
ありがとうございます。env 変数を削除し、sys.path リストを Python Init に渡すとうまくいきました。