过去我在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 修复了发送功能。抱歉造成损坏,有时即使进行单元测试也会出现问题。 (现在覆盖范围更加完整)