大家好!
我們與一些高科技客戶遇到了有關 Python 和許可合規性(批量)問題,我想在我們的內部社群中分享這些問題。我很高興看到這個線程變成一個討論,不僅包含我的問題的答案,還包含你們都遇到過的其他用例(Python 和批次)。
注意:我不是Python專家!
1) 使用 Python 呼叫 JMP(與使用 JMP 呼叫 Python)。我們的客戶希望這樣做。我在網路上看到了一些(非 JMP)材料證明了可行性。
A) Python 呼叫 JMP 是否有可接受的用例?對我來說,這聽起來像是批量。
如果這是批量情況,是否有人可以向我們的客戶提供現成的技術回應?我聽@Jeff_Perkinson說「JMP 不是針對此用例設計或測試的,因此我們不能保證以這種方式使用 JMP 完成的任何工作」(我在這裡解釋得不好,對不起傑夫!)。
2) JMP 支援 Pandas Python 函式庫嗎?我在 2018 年看到了@IkjuShin的一篇關於此問題的帖子,想知道這裡是否製作了任何其他材料,或者其他 SE 是否遇到過這個問題。
我在 JMP 腳本編寫指南中找到了這個範例,這讓我相信這對於 JMP/Python 整合器來說是一個可行的用例。
3) 客戶想要建立一個包含 While 迴圈的 JSL 腳本以連續執行。該腳本將在本質上專用於運行 JMP 的電腦上運行。用戶將開始執行腳本(理論上,結束它)。我沒有關於用例的任何其他詳細信息,但是,根據對話的上下文,想像一下該腳本將 ping 資料庫以獲取新數據並更新報告。
A) 這是否符合我們的桌面授權協議?
這是否已經過測試和/或以可靠的方式實現這一點有哪些技術障礙?
帖子很長...感謝您的收聽和貢獻!
謝謝馬丁。這裡有很多好內容,其中一些是我無法理解的!我得重讀幾遍。
嗨傑夫,
一個。
我認為這個 PDF 將是一個非常好的參考,儘管是 2009 年的(https://www.lexjansen.com/nesug/nesug09/ap/AP09.pdf),我也附上了。
它引用了一些腳本語言及其呼叫:
COMPARE & CONTRAST
COM Syntax across scripting tools is more alike than different across: Tcl, Perl , Python, R, & VBScript. For example: Start up JMP, Open a Document, Launch a Platform, Run some JSL.
TCL:
package require tcom
set JMP [::tcom::ref createobject "JMP.Application"];
set JMPdoc [$JMP OpenDocument {C:\Big Class.JMP}]
set oneway [$JMPdoc CreateOneway]
$JMP RunCommand "Distribution(
Perl:
use OLE;
use Win32::OLE;
$jmp = Win32::OLE->new('JMP.Application')
my $doc = $jmp->OpenDocument("C:\\Big class.jmp");
$doc -> CreateOneway
$jmp->RunCommand("Distribution(…
Python:
from win32com.client import Dispatch
jmp = Dispatch("JMP.Application")
doc = jmp.OpenDocument("C:/Big class.jmp")
doc.CreateOneway
jmp.RunCommand("Distribution(…
R:
library(rcom)
jmp <- comCreateObject("JMP.Application")
bigclass <- comInvoke(jmp, "OpenDocument", "C:\\Big Class.jmp")
oneway <- comInvoke(bigclass, "CreateOneway")
comInvoke(jmp, "RunCommand",…
VBscript:
set jmp = Wscript.CreateObject("JMP.Application")
set jmpdoc = jmp.OpenDocument("C:/Big class.jmp")
Set Oneway = JMPDoc.CreateOneway
jmp.RunCommand("Distribution(…
B.
這似乎也相關(來自python頁面):https: //stackoverflow.com/questions/17931476/how-to-call-a-jsl-script-from-python-script
在 Mac 上它提到:
import os
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/filename.jsl')
路徑/可執行檔和路徑/名稱之間有一個空格。
在 JSL 中,確保第一行只有 //!這將使腳本在打開時自動運行。另外,使用 quit();最後一行,這樣開啟的 JMP 實例就會關閉。
另請注意:確保 jmp.exe 在您的系統環境中可用,這樣如果您在命令列中鍵入“jmp.exe”,它將啟動 jmp。然後準備好您的 *.jsl。使用 python 進程執行此命令“jmp.exe *.jsl”,這將開啟 jmp 並執行 *.jsl 腳本,然後您可以將從 jmp 產生的任何內容匯入回 python。
還有另一個 Python 線程討論從 python 呼叫其他應用程式:https: //stackoverflow.com/questions/247724/how-can-i-launch-an-instance-of-an-application-using-python
這個社群主題也可能令人感興趣: https://community.jmp.com/t5/Discussions/jsl-Script-call-from-Python/mp/206295#M41799
C.
最後,自動化參考(http://www.jmp.com/support/downloads/pdf/jmp1001/automation_reference.pdf)展示如何使用 OLE 自動化。或http://www.jmp.com/support/downloads/pdf/vb_automation_reference.pdf
我還沒有嘗試過,也沒有在我的客戶群中見過任何人。到目前為止,我所看到的是在 JMP 中建立模型的用例,將最終模型轉換為 python 腳本,並在基於 python 的 Web 介面中使用它。此用例是汽車環境中新專案的資源規劃。此模型比專案負責人的建議效果好得多。然而,如果其他人可以依賴建立模型,這也可能會減少需要 JMP Pro 的使用者數量。但如果您的客戶擁有分析團隊,這總是可能的;)