如何為 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 模塊”的警告,但如果重新運行它們,日誌中不會出現錯誤。