如何为 JMP 14 配置 Python?我对 Python 很陌生,所以希望这是一个简单的问题。我安装了Python 3.6 和3.7 版本。我在两个版本中都安装了 numpy、matplotlib、scipy 和 pdfkit。但是,当尝试从脚本索引运行示例时,我在日志窗口中收到错误。
对于 Python 获取示例:
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
我收到以下错误:
//:*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
/*:
/**********/
# Read a binary file containing doubles into an ndarray
x1 = _JMPnp.fromfile("C:\\Users\\pmroz\\AppData\\Local\\Temp\\eacac6a7-dd5e-4ceb-dcbd0248455fb787.csv", dtype=_JMPnp.float64, count=-1, sep="")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPnp' is not defined
x1 = [1, 2, 3];
x2 = .;
/**********/
# Import a JMP exported .csv file into a Data Frame
dt1 = _JMPpd.read_csv("C:\\Users\\pmroz\\AppData\\Local\\Temp\\8b6475be-aaf0-408b-d1cae4522f253881.csv")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpd' is not defined
Send Expects Scriptable Object in access or evaluation of 'Send' , dt2 << /*###*/New Data View/*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
我缺少什么?谢谢。
回复:如何为 JMP 14 配置 Python?使用 JMP 和 Python 需要做一些事情。
1. JMP 具有 JSL 脚本语言和日志。
* 在 JSL 中查看值,您可以评估它们并在日志中查看它们,您可以创建它们或将它们放入数据表中,您可以将它们放入数据库中,甚至可以自己绘制图形输出。
* 您可以将值写入文件。
2. Python是它自己的环境,上面的a和b在python中也成立,但是通过使用python语句和程序。 就像 JSL 的 show 显示一个 JSL 值一样,python 的 print() 语句将打印一个 python 变量。
在脚本指南的 Python Send() 示例中
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Python 提交(“print(x)”); // 正在执行 python 代码(“print(x)”)并打印 Python 看到的 x 的值,它是与 JSL x 不同的变量。在 Python Send(x) 之前,Python 端没有变量 x,只有 JSL x
因此,如果通过示例上面的代码是
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
x = [3,2,1];
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Show( x );
您将从 Python Submit(“print(x)”) 中得到 x 为 1, 2 ,3
但从节目(x)来看;
您将得到 3, 2, 1,您必须记住您在两个不同的脚本环境中进行操作。
我建议您熟悉在不使用 Python 的情况下探索 JSL 的功能,有大量的 JSL 示例和大量材料可以帮助您了解如何使用 JSL。 而且,再次探索 JMP 之外的 Python 编程时,互联网上的示例数不胜数,包括教程网站。 熟悉每种语言将使您深入了解每种语言的优点和缺点。 因为您需要决定在哪里进行哪些计算。 您可以在 python 中完成所有操作,仅传递初始数据并返回结果,或者您可以在 JSL 中完成几乎所有操作,调用 python 进行一些计算或处理,这些计算或处理在 Python 中比 JSL 更容易完成,或者两者之间的任何组合。
保罗
回复:如何为 JMP 14 配置 Python?嗨保罗,
您实际上如何从 JSL 文件中看到您在 python 中提交给 python 的任何内容? 我没有任何这样做的经验,但是当我发送 x1 作为示例时,我进入 python 脚本窗口 x1 未存储。 您有关于此的某种分步文档吗?
回复:如何为 JMP 14 配置 Python?大家好,我也是从CETPA INFOTECH开始学习Python的。 我还没有太多知识,但我在这里分享我所知道和使用的一切:
点击链接下载适用于 Unix/Linux 的压缩源代码。
下载并解压文件。
如果您想自定义某些选项,请编辑模块/安装文件。
运行./configure 脚本。
制作。
进行安装。
读完保罗的回答后,我简要地理解了,并且同意他的解决方案。回复:如何为 JMP 14 配置 Python?嗨保罗,
我已经让它工作了(至少在一台电脑上,在另一台电脑上,当我想导入 numpy 时出现错误)。 我想建议,当您研究这个主题时,您可以以一种允许在不同 Conda 环境之间轻松选择的方式进行设置。
将数据表传输到 pandas 的问题是已知问题还是我做错了什么?
谢谢
格尔德
回复:如何为 JMP 14 配置 Python?您需要设置 Python Init() 和/或系统环境变量以指向 conda 安装。 请参阅之前对此社区帖子的回复。 有使用 Python Init() 设置参数以及设置环境变量以指向 Python 安装的示例。
回复:如何为 JMP 14 配置 Python?嗨保罗,
我只是想将数据表发送到Python。 但是,所有列最终都在一个字符串列中,实际列由 \t 分隔(参见图片)。 知道这里出了什么问题吗? 您是否需要特殊的 pandas 版本(或特殊的 matplotlib 版本,因为这也会导致错误)?
关于Python的配置,如果能够选择一个应该使用的conda环境那就太好了。

问候
格尔德
回复:如何为 JMP 14 配置 Python?你好@Rob128 ,
使用与 Python 的完整 2 路连接通过Python 的本地安装,允许 JMP 将数据发送到 Python,从 JSL 脚本执行 Python 代码,
JMP 14 中引入了从 Python 程序返回数据和结果,并在 JMP 中交互式探索 Python 结果。
正如您使用 JMP 13(带运行程序)演示的那样,您可以使用 stdin 和 stdout 控制外部程序。
评论来自@保罗·尼尔森指的是与 Python 的完整 2 路连接的 JMP 14 实现,而不是通过运行程序。
哈特哈,
斯坦
回复:如何为 JMP 14 配置 Python?我认为是这样,因为我的 .py 只是 Hello world 的打印,可以与此 jsl 一起使用:
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<GET version=""></GET>
和日志:
//:*/
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<Get Version;
/*:
"Hello World
"
回复:如何为 JMP 14 配置 Python?我认为 Python 接口直到 JMP 14 才可用。
回复:如何为 JMP 14 配置 Python?嗨保罗,
感谢您的工作,不幸的是我只有 JMP 版本 13.0。 我使用的是 Python 3.7.1 版本,没有 Anaconda。
我拥有所需的所有库(numpy、scipy、matplotlib、panda... )。
我在 Windows 10 上,我做了你的“变量名”技巧(顺便说一下,这已经很好解释了),但是对于这段代码我正在挣扎......
看看它:
Names Default To Here( 1 );
Python Init(Use Python Version("3.7.1"));
/*Python Submit("\[
import sys
sys.path=['', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
*/
x1 = [1, 2, 3];
Python Send( x1 );
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 Init 不是蓝色字体。
日志窗口显示:
名称未解析:Python Init 在访问或评估 'Python Init' 时,Python Init( Use Python Version( "3.7.1" ) ) /*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init( Use Python Version( "3.7.1" ) ) /*###*/;
x1 = [1, 2, 3];
Python Send( x1 );
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();
谢谢阅读 :)
罗宾
回复:如何为 JMP 14 配置 Python?当然,我发帖后找到了更好的方法,但它涉及到设置环境变量。JMP 14 正在寻找环境变量。这是我在上一篇文章中描述的 sys.path,但是您需要将其设置为 JSL 路径列表。在 Windows 10 上,您需要转到系统属性、高级系统设置、环境变量并创建一个新的环境变量。
Variable Name: Python sys path
Variable Value: {"", "C:\\local\\anaconda3\\python36.zip", "C:\\local\\anaconda3\\DLLs",
"C:\\local\\anaconda3\\lib", "C:\\local\\anaconda3", "C:\\local\\anaconda3\\lib\\site-packages",
"C:\\local\\anaconda3\\lib\\site-packages\\win32",
"C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib",
"C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin"}
然后允许这个脚本
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
x1 = [1, 2, 3];
Python Send( x1 );
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();
给预期的
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

回复:如何为 JMP 14 配置 Python?首先,对于您在 JMP 的 python 支持方面遇到的麻烦,我深表歉意。Python 功能的原始开发人员在 JMP 14 开发周期结束时退休。 我正在通过代码来解决未解决的问题。
JMP 定位 Python 的能力存在问题。如果 JMP 自行找到它,那么您就可以开始了,通常如果您的系统上只有一个版本的 Python,那么您就可以了。当它失败时,很难在当前的 JMP 版本中解决该问题。 此外,Windows 和 Mac 之间在查找 Python 方面也存在差异。 我在代码中发现了一些错误,这些错误应该让您指定 Python 实例所在的位置。
在 Python Init() 中使用 Python sys 路径 ( {"",...} ) 适用于 JMP for Mac v14.1 或更高版本,但在 JMP 14.0、14.1 for Windows 上会损坏。
如果系统上有多个 Python 版本,Windows JMP 就无法很好地处理这一问题。 您需要在 Python Init 中指定要使用的 Python 版本(使用 Python Version("3.6"));例如选择3.6版本。即使指定了此选项,您仍然可能会在定位 JMP 尝试加载以提供互操作性的模块时出现日志错误。在 Mac 上,如果 Python3 版本超过 1 个,JMP 14.0 将会出现问题。 Mac JMP 14.1 通过使用最高版本的 Python 3 修复了此问题,而不是在存在多个 Python 版本时进行修复。
在我的 Mac 上,Python 3.6 安装在 /Library/Frameworks/Python.framework 中,我的 Python Init() 语句是:
Python Init( Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), 使用 Python 版本("3.6") );
Path() 语句适用于 Mac,但不适用于 Windows...
在我的 Windows 10 桌面上,我已在 C:\local\anaconda3 目录中安装了带有 Python 3.6 的 Anaconda。
以下脚本为我运行,尽管它消除了未找到模块的警告。 为了解决模块加载问题,我在 init 之后做的第一件事是导入 sys 模块,然后将 sys.path 设置为如果在 python 解释器中执行以下操作将返回的路径值,然后在其中加载这些模块在继续之前我的脚本。
从 python 解释器中找到 sys.path。
C:\local\anaconda3>.\python.exe
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print (sys.path)
['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
>>>
我修改后的脚本:
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
Python Submit("\[
import sys
sys.path=['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
x1 = [1, 2, 3];
Python Send( x1 );
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();
日志中输出如下
/**********/
# Import the numpy module for array and matrix support
import numpy as _JMPnp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'numpy'
/**********/
# Import the scipy module for scientific computing support
import scipy as _JMPsp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'scipy'
/**********/
# Import the pandas module for Series/Data Frame support
import pandas as _JMPpd
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'pandas'
/**********/
# Import the matplotlib module for 2D plotting
import matplotlib as _JMPmpl
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Import the matplotlib.pyplot module for plots
import matplotlib.pyplot as _JMPpp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpp' is not defined
Unable to import the 'numpy' Python module
Unable to import the 'scipy' Python module
Unable to import the 'pandas' Python module
Unable to import the 'matplotlib' Python module
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0
针对 JMP 14.1 和当前开发进行了测试。
我再次代表 JMP Development 对 Python 支持的原始状态表示歉意。请耐心等待我们继续修复和改进这一重要功能。 请报告问题您发现新功能并提出建议。
谢谢。
回复:如何为 JMP 14 配置 Python?我安装了 JMP Pro 14.0 和 Anaconda 1.8.7,并且可以运行该代码。 _JMPxx,指的是 numpy: np、pandas: pd 和 matplotlib.pyplot: pp。 看来熊猫可能是一种依赖。
第一次运行前 6 行代码时,我收到一条有关“无法导入 'matplotlib.pyplot' Python 模块”的警告,但如果重新运行它们,日志中不会出现错误。