I'm experiencing issues integrating Python with JMP 17. Despite following the recommended steps, JMP crashes every time I run Python Init. Here are the details:
Systemkonfiguration:
- JMP Version: 17
- Python-Version: 3.9.13 (64-Bit) (auch v3.13.1 ausprobiert)
- Betriebssystem: Windows 10 (64-Bit)
Durchgeführte Schritte:
- Python 3.9.13 installiert und zum PATH hinzugefügt.
- Erforderliche Python-Pakete installiert: Numpy, Pandas, Matplotlib, Scipy, PyQt5.
- Set the environment variable
JMP_PYTHON_MODULE_PATH to C:\Program Files\Python39\python39.dll. - Überprüfte Python-Installation und Paketinstallationen über die Eingabeaufforderung.
- Habe versucht, ein einfaches JSL-Skript zum Initialisieren von Python auszuführen:
// Initialize Python with the specified path
Python Init( Path( "C:\\Program Files\\Python39\\python39.dll" ) );
// Simple Python code to test initialization
python_code = "
print('Hello from Python!')
";
// Run the Python code
Python Submit(python_code);
// Close the Python session
Python Term();Ausgabe: JMP crashes and closes immediately upon running Python Init.
Durchgeführte Schritte zur Fehlerbehebung:
- Python-Pfad und DLL-Dateispeicherort überprüft.
- Deinstallierte andere Python-Versionen, um Konflikte zu vermeiden.
- JMP 17 neu installiert.
- JMP-Protokolle auf Fehlermeldungen geprüft (keine gefunden).
Trotz dieser Bemühungen besteht das Problem weiterhin. Ist jemand anders auf dieses Problem gestoßen oder hat jemand Vorschläge zur Lösung?
Vielen Dank im Voraus für Ihre Hilfe!
Haben Sie die Möglichkeit, auf JMP18 zu aktualisieren?
Das Update ist für jeden Benutzer kostenlos.
Neben vielen tollen Verbesserungen interagieren JMP und Python jetzt wie am Schnürchen : )
Ich wünschte, ich könnte es selbst aktualisieren, aber die Firma, für die ich arbeite, bekommt die neuen Software-Updates immer mindestens ein Jahr zu spät.
Ich würde den JMP-Support direkt kontaktieren und ein Trouble Ticket einreichen.
support@jmp.com
Wie bereits von anderen erwähnt, macht JMP 18 Ihnen das Leben in Bezug auf Python viel leichter. JMP installiert ein privates eingebettetes Python 3.11, das sofort mit JMP funktioniert. Python mit JMP 14-17 zum Laufen zu bringen, kann eine Herausforderung sein und war der Hauptgrund, warum JMP jetzt mit Python ausgeliefert wird.
Entfernen Sie zuerst die Umgebungsvariable. JMP_PYTHON_MODULE_PATH
Zweitens: Verwenden Sie Python.org oder Anaconda? Verwenden Sie Python.org.
Drittens: JMP 17 ist 64-Bit, Sie müssen 64-Bit-Python verwenden.
Ich konnte Anaconda zum Laufen bringen, aber nur, indem ich den JMP-Quellcode im Debugger durchging, um die Python-Initialisierung richtig zu konfigurieren.
Außerdem ist JMP 14-17 nicht für die Arbeit mit virtuellen Umgebungen ( venv) ausgelegt.
Die Python-Funktionen Connect() und Python Init() akzeptieren verschiedene Parameter, die das Problem lösen können.
Am einfachsten können Sie es wie folgt versuchen:
Python Init ( Use Python Version("3.9") );
Sie haben bereits Folgendes ausprobiert:
Python Init (
Path("C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll") <BR />);
Schließlich besteht die „Brute-Force“-Methode darin, sowohl den Pfad zur DLL als auch den vollständigen Python-Sys.path als JSL-Liste anzugeben. Starten Sie Python über die Befehlszeile und führen Sie Folgendes aus.
import sys
print ( sys.path )
Auf meinem Rechner wird folgendes angezeigt:
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\_me_\\panels\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\Pythonwin']
>>>
Jetzt können Sie die Python-Liste [ ... ] nehmen und daraus eine JSL-Liste erstellen, die Sie wie unten gezeigt an Python Init() übergeben. Hier unterscheiden sich die beiden, da das folgende Skript aus einem Skript eingefügt wurde, das ich vor einiger Zeit ausgeführt habe. Ich habe das obige Python heute ausgeführt. Verwenden Sie im Zweifelsfall alles, was Python selbst für seinen sys.path zurückgibt.
Names Default To Here( 1 );
Python Init(
Path("C:\\Users\\_me__\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll"),
Python Sys Path(
{
"",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\DLLs",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39",
"C:\\Users\\_me_\\AppData\\Roaming\\Python\\Python39\\site-packages",
"C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages"
}
)
);
Python Submit("\[
import sys
print(sys.path)
print(sys.version)
]\");
x1 = [1, 2, 3];
Python Send( x1 );
x1 = [3,2,1];
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 Submit("\[
print(dt1)
]\");
Darüber hinaus ... Upgrade auf JMP 18.
Danke, das Entfernen der Umgebungsvariable und das Übergeben der sys.path-Liste an die Python-Initialisierung hat funktioniert.