从 JSL 运行 Python 脚本我想从我的 JSL 代码运行 Python 脚本。 最好的方法是什么? 谢谢
回复:从 JSL 运行 Python 脚本更新:自 JMP 14.0(在 15.0 中得到很大改进)以来,从 JSL 运行 Python 的最佳方法现在是使用在命令 Python Init()、Python Submit() 等中实现的 JMP 接口。
更多信息请点击这里:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
对于支持运行 Anaconda 虚拟环境的包装器,请检查:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
回复:从 JSL 运行 Python 脚本x = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
然后执行相反的操作,从 python 脚本运行 JSL。这适用于 Mac,JMP 13.2(这是 python 而不是 jsl)
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
open 参数包含应用程序路径、一个空格,然后是要打开的路径/文件。
它可能很重要
//!
在脚本的第一行,这样它就会自动运行。 然后在最后一行包含此内容
Quit();
这将关闭 os.sytem 启动的 JMP 实例。
回复:从 JSL 运行 Python 脚本我正在使用适用于 Oracle 11 的 Oracle 64 位 ODBC 驱动程序与 Oracle v12 数据库进行通信。 我没有看到任何像你提到的行为。 我已将其用于 JMP 11 和 12。 我们尚未完全过渡到 JMP 13; v13.1.0 修复了 V13.0 无法读取 CLOB 的错误。
顺便说一句,我永远无法让 Microsoft 提供的 Oracle ODBC 驱动程序正常工作。
祝你好运!
回复:从 JSL 运行 Python 脚本我现在使用 ODBC 驱动程序,但它们不可靠。 我真的不认为这是 JMP,但从 JMP 12 - 13 和 oracle 11-12 切换肯定会扰乱苹果车。 我知道必须每五个查询关闭并重新打开数据库连接才能使事情可靠运行。
回复:从 JSL 运行 Python 脚本使用 ODBC 驱动程序将数据直接读入 JMP 可能会更简单、更快捷。 你的SQL数据库是什么? 我在 Oracle 方面拥有丰富的经验,可以在这方面提供帮助。
回复:从 JSL 运行 Python 脚本使用
txt = runprogram( ... readfunction("text"));
如果 python 程序生成任何 stdout(打印语句等),它将作为 runProgram 的结果返回到 JSL。 在 Python 程序终止之前,JSL 不会继续读取函数(“文本”) 。 你可能想打印类似的东西
文件名.dat,100
这样JSL就可以知道该文件中有100行数据。 或者如果数据库不可用,则打印一条错误消息并进行处理。
(JSL 还具有一些可能更合适的 SQL 功能@埃里克希尔)
回复:从 JSL 运行 Python 脚本克雷格,
谢谢你的快速反应。 我想做的是打电话给
python 程序并暂停 JSL 的执行,直到 python 程序
终止。 python 程序将其输出写入一个文件,我将
然后通过JSL打开并检索。 我基本上是想用Python来
从数据库检索数据以供我的 JSL 代码使用。 顺序应该
是:
1. 运行 JSL 并准备 SQL 查询,然后将其组合在一起
创建 python 脚本。
2. 运行python程序并暂停JSL
3. 当 python 完成时,JSL 继续,打开文件
python保存并处理它。
回复:从 JSL 运行 Python 脚本readFunction 告诉 RunProgram 如何处理 python 程序的输出(写入 stdout 的数据)。 如果您提供实际的 JSL 函数,由功能函数,如您的示例中所示,那么 JSL 和 python 独立运行,每当 JMP 空闲时,就可以调用您的 JSL 函数以从 python 检索更多输出。 如果 python 程序永远运行并产生无限的输出流,这可能很有用。 此处发布的另一个示例使用读取函数(“文本”) ,这是获取 python 程序(当然必须终止)的所有输出的简单方法。 输出作为 runProgram 函数的结果返回。
如果您提供一个函数供 runProgram 调用,那么您还必须将 runprogram 对象保留在 JSL 变量中,以便 JMP 和 Python 之间的连接不会很快被破坏:对象= 运行程序(...)
这这readFunction 中的参数与对象上面的变量。 它使您可以访问 runProgram 对象的方法,例如 <
编辑:写入函数的输出进入JMP日志;请务必在那里查找您的结果。
回复:从 JSL 运行 Python 脚本我正在努力执行“运行程序”命令。 下面的行在命令提示符下运行良好:
c:\ mycompany \ anaconda3 \ python.exe“c:\ users \ myuserid \ temp \ pythonsqltest.py”
我试图通过执行以下脚本来运行它:
Names Default To Here( 1 );
RP = RunProgram(
Executable( "c:\mycompany\anaconda3\python.EXE" ),
Options( {"c:\users\myuserid\temp\pythonsqltest.py"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
我想我不太理解“ReadFunction”在这里扮演的角色。 我缺少什么?
回复:从 JSL 运行 Python 脚本这是我正在玩的一个例子
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy 是 Twitter 的 python 包。 此示例期望 python 程序在 JSL 继续之前启动、生成输出并终止。 还有其他方法可以使用 RunProgram。
回复:从 JSL 运行 Python 脚本使用
运行程序()
功能。
详情请访问:
帮助==>脚本索引==>RunProgram