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)
- 作業系統: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 安裝和軟體套件安裝。
- 嘗試執行一個簡單的 JSL 腳本來初始化 Python:
// 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 現在的互動也很有魅力:)
我希望這取決於我,這樣我就可以升級它,但我工作的公司總是至少晚一年才能獲得新的軟體更新。
正如其他人所提到的,JMP 18 讓您的 Python 生活變得更加輕鬆。 JMP 安裝了一個私有的嵌入式 Python 3.11,它可以與 JMP 一起使用。讓 Python 與 JMP 14-17 搭配使用可能具有挑戰性,這也是 JMP 現在與 Python 一起提供的主要原因。
首先刪除環境變數。 JMP_PYTHON_MODULE_PATH
其次,您運行的是 Python.org 還是 Anaconda?使用 Python.org。
第三,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(),如下所示。這裡兩者有所不同,因為下面的腳本是從我不久前運行的腳本貼上的。我今天運行了上面的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 是有效的。