過去我在Python集成方面取得了一些成功,但是在最近重新安裝後,在使其正常工作方面遇到了很大的問題。
配置:
- 我上線了JMP專業版15.2和Python 3.6。
- 為了確保python安裝是乾淨的,我已經將其卸載並重新安裝。 除所需模塊外,未安裝其他模塊:
- numpy,scipy,pandas,matplotlib,pyqt5及其依賴項:
>> py -3.6 -m pip freeze
cycler==0.10.0
kiwisolver==1.3.1
matplotlib==3.3.4
numpy==1.19.5
pandas==1.1.5
Pillow==8.2.0
pyparsing==2.4.7
PyQt5==5.15.4
PyQt5-Qt5==5.15.2
PyQt5-sip==12.9.0
python-dateutil==2.8.1
pytz==2021.1
scipy==1.5.4
six==1.16.0
Python Init();
Python Submit( "import sys" );
Python Submit( "print(sys.version)" );
Python Term();
3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
0
通過此設置,我可以執行:
Python Init();
x = 5;
Python Send( x );
Python Submit( "print(x)" );
Python Submit(
"\[
basket = ['apple', 'orange', 'pear']
print(basket)
]\"
);
Python Term();
不出所料,我看到了5.0在日誌和0對於Python Term():
5.0
<BR />['apple', 'orange', 'pear']<BR />
0
現在,如果我推送的內容不只是一個簡單的數字,字符串或列表,我會得到一個錯誤:
Python Init();
x = [5];
Python Send( x );
Python Submit( "print(x)" );
Python Term();
這將導致以下錯誤:
Python data type is not supported.
幾乎沒有腳本索引示例可以工作。 例如:
Names Default To Here( 1 );
Python Init();
a = "abcdef";
d = 3.141;
v = [9 8 7, 6 5 4, 3 2 1];
m = [1 2 3, 4 5 6, 7 8 9];
ml = Python Execute(
{v, m, a, d},
{x, z, a, d},
"\[
import numpy as np
a = np.multiply(v, m) # matrix product
d = np.divide(v, m) # matrix division
z = np.multiply(m, np.linalg.inv(v)) # m * inv(v) called Left division
x = np.multiply(np.linalg.inv(m), v) # inv(m) * v called right division
]\"
);
Show( v, m, ml, x, z, a, d );
Python Term();
Python data type is not supported.
有什麼我想念的嗎? JMP似乎可以很好地查找數據並將數據發送到Python,因此查找Python安裝並不困難,但由於某種原因,任何比簡單的Python原語還多的東西都不起作用。
更新:
我認為問題是孤立的Python發送或者Python執行因為JMP試圖將數據發送到python。 在python中創建數據並將其導入JMP的工作原理。
Python Init();
Python Submit("\[
df = _JMPpd.DataFrame({"Col1": [1, 2, 3],
"Col2": [4, 5, 6]})
print(df)
x = _JMPnp.array([1,2,3])
print(x)
]\");
dt = Python Get(df);
Show(dt);
dt << New Data View;
x = Python Get(x);
Show(x);
Python Term();
而且效果很好:
Col1 Col2
0 1 4
1 2 5
2 3 6
[1 2 3]
dt = DataTable("df");
x = [1 2 3];
0
嘗試更新到JMP 15.2.1,因為它可能已解決了該問題:
使用Python Send()將數據表發送到JMP不再產生不支持的數據類型錯誤。
在新增對發送類型 bool 和 None 的支援時,JMP 15.2 破壞了 bool 和 None 程式碼後面的任何內容的 send() 命令,程式碼中省略了一個「}」。 JMP 15.2.1 修復了傳送功能。抱歉造成損壞,有時即使進行單元測試也會出現問題。 (現在覆蓋範圍更加完整)