嗨團隊!
我們一直在與我們希望在內部社區共享的一些高科技客戶中遇到有關Python和許可合規(批處理)問題的問題。我希望看到這個帖子變成一個討論,不僅包含我的問題的答案,還包含你們遇到的其他用例(Python和批處理)。
注意:我不是Python的專家!
1)使用Python調用JMP(而不是使用JMP調用Python)。我們的客戶想要這樣做。我在網上看到一些(非JMP)材料證明了可行性。
A)Python是否有一個可以接受的用例調用JMP?這對我來說聽起來像批次。
B)如果這是批處理情況,是否有人有我們可以提供給客戶的罐裝技術響應?我聽說 @Jeff_Perkinson 說“JMP不是為這個用例設計或測試的,所以我們不保證以這種方式使用JMP完成的任何工作”(我在這裡很難解釋,對不起Jeff!)。
2)JMP是否支持Pandas Python庫?我看到了一個帖子 @IkjuShin 從2018年開始,我們想知道這裡是否有任何其他材料,或者其他SE是否遇到過這個問題。
我找到了這個例在JMP腳本指南中,我認為這是JMP / Python集成商的可行用例。
3)客戶希望創建一個包含While循環的JSL腳本以便連續執行。該腳本將在專門用於運行JMP的計算機上運行。用戶將開始執行腳本(理論上,結束它)。我沒有關於用例的任何其他詳細信息,但是,根據對話的上下文,假設此腳本將ping數據庫以獲取新數據並更新報告。
A)這是否符合我們的桌面許可協議?
B)這是否已經過測試和/或以可靠的方式實現這一目標的技術障礙是什麼?
很長的帖子...感謝您的貢獻和您的貢獻!
傑夫,你好
一個。
我認為這篇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的用戶數量。但是,如果您的客戶擁有分析組,則始終可以這樣做;)
謝謝馬丁。這裡有很多好的內容,其中一些是我的頭腦!我將不得不重讀幾次。