Wie konfiguriere ich Python für JMP 14?Ich bin sehr neu in Python, also ist das hoffentlich eine einfache Frage.Ich habe Python Version 3.6 und 3.7 installiert.Ich habe Numpy, Matplotlib, Scipy und PDFkit in beiden Versionen installiert.Allerdings erhalte ich Fehlermeldungen im Protokollfenster, wenn ich versuche, Beispiele aus dem Skriptindex auszuführen.
Für das Python Get-Beispiel:
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();
Ich erhalte die folgenden Fehler:
//:*/
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();
Was vermisse ich?Danke.
Betreff: Wie konfiguriere ich Python für JMP 14?Hier sind einige Dinge im Gange, um JMP und Python zu nutzen.
1. JMP verfügt über eine Skriptsprache und ein Protokoll für JSL.
* Wenn Sie Werte in JSL sehen, können Sie sie auswerten und im Protokoll sehen, Sie können sie erstellen oder in Datentabellen einfügen, Sie können sie in Datenbanken einfügen oder sogar selbst grafische Ausgaben erstellen.
* Sie können Werte in eine Datei schreiben.
2. Python ist eine eigene Umgebung, a und b oben gelten auch für Python, jedoch unter Verwendung von Python-Anweisungen und -Programmen. So wie die Show von JSL einen JSL-Wert anzeigt, gibt die print( )-Anweisung von Python eine Python-Variable aus.
Im Python Send()-Beispiel im Skripthandbuch
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();
Das Python Submit („print(x)“); // führt den Python-Code („print(x)“) aus und gibt den Wert von x aus, wie er von Python gesehen wird. Es handelt sich um eine vom JSL-x getrennte Variable. und bis zum Python Send(x) gibt es auf der Python-Seite keine Variable x, nur die JSL x
Wenn also der obige Code als Beispiel wäre
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 );
Sie erhalten von Python Submit(“print(x)”), dass x 1, 2, 3 ist
Aber aus der Show (x);
Sie würden das 3, 2, 1 erhalten, das Sie berücksichtigen müssen, wenn Sie in zwei verschiedenen Skriptumgebungen arbeiten.
Ich würde vorschlagen, dass Sie sich mit der Erkundung der Fähigkeiten von JSL ohne Python vertraut machen. Es gibt jede Menge JSL-Beispiele und viele Materialien, um die Arbeit mit JSL zu verstehen. Und wenn es um die Programmierung in Python außerhalb von JMP geht, gibt es zu viele Beispiele, als dass man sie im Internet aufzählen könnte, darunter auch Tutorial-Seiten. Wenn Sie mit jeder Sprache gut vertraut sind, erhalten Sie einen Einblick in die Stärken und Schwächen jeder Sprache. Denn Sie müssen entscheiden, wo Sie welche Berechnungen durchführen möchten. Sie können alles in Python tun, indem Sie nur Anfangsdaten übergeben und Ergebnisse zurückgeben, oder Sie können fast alles in JSL tun, indem Sie Python aufrufen, um Berechnungen oder Verarbeitungen durchzuführen, die in Python einfacher als in JSL durchzuführen sind, oder eine beliebige Mischung dazwischen.
Paul
Betreff: Wie konfiguriere ich Python für JMP 14?Hallo Paul,
Wie sehen Sie eigentlich alles, was Sie in Python aus einer JSL-Datei in Python übertragen? Ich habe keine Erfahrung damit, aber wenn ich x1 als Ihr Beispiel sende und zu einem Python-Skriptfenster gehe, wird x1 nicht gespeichert. Gibt es dazu eine Schritt-für-Schritt-Dokumentation?
Betreff: Wie konfiguriere ich Python für JMP 14?Hallo, ich habe auch angefangen, Python von CETPA INFOTECH zu lernen. Ich habe noch nicht viel Wissen, aber was ich weiß und verwende, teile ich hier:
Folgen Sie dem Link, um den komprimierten Quellcode für Unix/Linux herunterzuladen.
Dateien herunterladen und extrahieren.
Bearbeiten Sie die Modules/Setup-Datei, wenn Sie einige Optionen anpassen möchten.
Führen Sie das Skript ./configure aus.
machen.
make installieren.
Nachdem ich die Antwort von Paul gelesen habe, verstehe ich es kurz und stimme seiner Lösung zu.Betreff: Wie konfiguriere ich Python für JMP 14?Hallo Paul,
Ich habe es bereits zum Laufen gebracht (zumindest auf einem PC, auf dem anderen gibt es einen Fehler, wenn ich Numpy importieren möchte). Ich wollte vorschlagen, dass Sie, wenn Sie an diesem Thema arbeiten, es so einrichten können, dass Sie problemlos zwischen verschiedenen Conda-Umgebungen wählen können.
Ist das Problem mit der Übertragung der Datentabelle an Pandas ein bekanntes Problem oder mache ich etwas falsch?
Danke
Gerd
Betreff: Wie konfiguriere ich Python für JMP 14?Sie müssen Ihre Python Init()- und/oder Ihre Systemumgebungsvariablen so einstellen, dass sie auf die Conda-Installation verweisen. Sehen Sie sich die früheren Antworten auf diesen Community-Beitrag an. Es gibt Beispiele sowohl für das Festlegen der Parameter innerhalb von Python Init() als auch für das Festlegen von Umgebungsvariablen, die auf Ihre Python-Installation verweisen.
Betreff: Wie konfiguriere ich Python für JMP 14?Hallo Paul,
Ich versuche nur, eine Datentabelle an Python zu senden. Alle Spalten enden jedoch in einer Zeichenfolgenspalte, wobei die tatsächlichen Spalten durch \t getrennt sind (siehe Bild). Irgendeine Idee, was hier schief läuft? Benötigen Sie eine spezielle Pandas-Version (oder eine spezielle Matplotlib-Version, da auch dies einen Fehler verursacht)?
Bezüglich der Konfiguration von Python wäre es toll, wenn man eine Conda-Umgebung auswählen könnte, die verwendet werden soll.

Grüße
Gerd
Betreff: Wie konfiguriere ich Python für JMP 14?Hallo @Rob128 ,
Die Verwendung einer vollständigen 2-Wege-Verbindung zu Python über eine lokale Installation von Python, die es JMP ermöglicht, Daten an Python zu senden, Python-Code aus einem JSL-Skript auszuführen,
Die Rückgabe von Daten und Ergebnissen aus Python-Programmen sowie die interaktive Erkundung von Python-Ergebnissen in JMP wurden in JMP 14 eingeführt.
Wie Sie mit JMP 13 (mit Run Program) demonstriert haben, können Sie ein externes Programm mit stdin und stdout steuern.
Die Kommentare von @Paul_Nelson beziehen sich auf die JMP 14-Implementierung der vollständigen 2-Wege-Verbindung zu Python und nicht über Programm ausführen.
HTH,
Stan
Betreff: Wie konfiguriere ich Python für JMP 14?Ich denke, das ist so, weil meine .py-Datei, die nur ein Ausdruck von Hello World ist, mit dieser JSL funktioniert:
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>
Und das Protokoll:
//:*/
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
"
Betreff: Wie konfiguriere ich Python für JMP 14?Ich dachte, dass die Python-Schnittstelle erst mit JMP 14 verfügbar war.
Betreff: Wie konfiguriere ich Python für JMP 14?Hallo Paul,
Vielen Dank für Ihre Arbeit, leider habe ich nur JMP Version 13.0. Und ich arbeite mit Python Version 3.7.1 ohne Anaconda.
Ich habe alle benötigten Bibliotheken (Numpy, Scipy, Matplotlib, Panda ... ).
Ich verwende Windows 10 und habe Ihren Trick mit dem „Variablennamen“ ausgeführt (der übrigens gut erklärt ist), aber mit diesem Code habe ich Probleme ...
Schauen Sie es sich stattdessen an:
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();
Anmerkung: Python Init ist nicht in blauer Schrift.
Das Protokollfenster zeigt Folgendes an:
Name ungelöst: Python Init beim Zugriff oder bei der Auswertung von „Python Init“, Python Init( Python-Version verwenden( „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();
Danke fürs Lesen 
Robin
Betreff: Wie konfiguriere ich Python für JMP 14?Natürlich finde ich nach dem Posten einen besseren Weg, aber dazu gehört das Setzen einer Umgebungsvariablen.JMP 14 sucht nach einer Umgebungsvariablen.Es handelt sich um den sys.path, den ich im vorherigen Beitrag beschrieben habe. Sie müssen jedoch eine JSL-Pfadliste festlegen.Unter Windows 10 müssen Sie zu den Systemeigenschaften, den erweiterten Systemeinstellungen und den Umgebungsvariablen gehen und eine neue Umgebungsvariable erstellen.
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"}
Was dann dieses Skript ermöglicht
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();
Um das Erwartete zu geben
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

Betreff: Wie konfiguriere ich Python für JMP 14?Zunächst möchte ich mich für die Probleme entschuldigen, die Sie mit der Python-Unterstützung von JMP haben.Der ursprüngliche Entwickler der Python-Funktion ging am Ende des Entwicklungszyklus von JMP 14 in den Ruhestand. Ich arbeite mich durch den Code, um die offenen Probleme zu beheben.
Es gibt Probleme mit der Fähigkeit von JMP, Python zu finden.Wenn JMP es selbst findet, können Sie loslegen. Normalerweise ist alles in Ordnung, wenn Sie nur eine Python-Version auf Ihrem System haben.Wenn dies fehlschlägt, ist es schwierig, das Problem in aktuellen JMP-Versionen zu umgehen. Darüber hinaus gibt es Unterschiede zwischen Windows und Mac darin, wie gut oder schlecht Python gefunden wird. Ich habe ein paar Fehler im Code entdeckt, der es Ihnen ermöglichen soll, anzugeben, wo sich Ihre Python-Instanz befindet.
Die Verwendung des Python-Systempfads ({"",...}) in Python Init() funktioniert auf JMP für Mac v14.1 oder neuer, ist jedoch auf JMP 14.0, 14.1 für Windows fehlerhaft.
Windows JMP kommt damit nicht gut zurecht, wenn mehr als eine Python-Version auf dem System vorhanden ist. Sie müssen die Version von Python angeben, die in Python Init verwendet werden soll ( Use Python Version("3.6")); um beispielsweise die Version 3.6 auszuwählen.Auch wenn dies angegeben ist, kann es beim Auffinden von Modulen, die JMP zu laden versucht, um die Interoperabilität bereitzustellen, zu Fehlern im Protokoll kommen.Auf dem Mac wird es bei JMP 14.0 Probleme geben, wenn es mehr als eine Version von Python3 gibt. Mac JMP 14.1 behebt dieses Problem, indem es die höchste Version von Python 3 verwendet, anstatt auszusteigen, wenn es mehr als eine gibt.
Auf meinem Mac, auf dem Python 3.6 in /Library/Frameworks/Python.framework installiert ist, lautet meine Python Init()-Anweisung:
Python Init( Path("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Use Python Version("3.6") );
Die Path()-Anweisung funktioniert auf Mac, aber nicht auf Windows ...
Auf meinem Windows 10-Desktop habe ich Anaconda mit Python 3.6 in meinem Verzeichnis C:\local\anaconda3 installiert.
Das folgende Skript wird bei mir ausgeführt, obwohl es die Warnungen ausgibt, dass die Module nicht gefunden werden. Um das Problem beim Laden von Modulen zu lösen, muss ich nach der Initialisierung zunächst das sys-Modul importieren und dann sys.path auf den Pfadwert setzen, der zurückgegeben würde, wenn Sie im Python-Interpreter Folgendes tun würden, und dann diese Module darin laden mein Skript, bevor ich fortfahre.
Suchen Sie Ihren sys.path über den Python-Interpreter.
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']
>>>
Mein geändertes Skript:
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();
Mit der folgenden Ausgabe im Protokoll
/**********/
# 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
Getestet mit JMP 14.1 und der aktuellen Entwicklung.
Nochmals im Namen von JMP Development entschuldige ich mich für den Rohzustand der Python-Unterstützung.Bitte haben Sie Geduld, während wir diese wichtige Funktion weiterhin reparieren und verbessern. Bitte Probleme melden Sie finden und Vorschläge für neue Funktionen.
Danke.
Betreff: Wie konfiguriere ich Python für JMP 14?Ich habe JMP Pro 14.0 und Anaconda 1.8.7 installiert und kann diesen Code ausführen. Das _JMPxx bezieht sich auf numpy: np, pandas: pd und matplotlib.pyplot: pp. Es scheint, dass Pandas eine Abhängigkeit darstellen könnten.
Ich erhalte die Warnung „Das Python-Modul „matplotlib.pyplot“ konnte nicht importiert werden“, wenn ich die ersten 6 Codezeilen zum ersten Mal ausführe, aber wenn ich sie erneut ausführe, erscheint kein Fehler im Protokoll.