Hallo,
Ich habe ein JMP-Add-In, mit dem ich Python aufrufe (in JMP integriert, da ich JMP 18.2.2 verwende) und ich muss Python-Pakete installieren (falls sie nicht bereits installiert sind).
Ich habe daher zwei Fragen:
- Ich habe keine Internetverbindung und kann daher weder pip install noch jmp.utils verwenden, um die Python-Pakete zu installieren. Wie kann ich Python-Pakete in das Add-In in JMP einbinden und installieren?
- Kann ich sehen, ob es bereits installiert ist, und wenn ja, eine Neuinstallation vermeiden?
Aktuell habe ich folgendes gemacht:
strPathPythonLibs = "C:\Users\Utilisateur\Documents\Sophie\JMP Addin\Python libs";
Python send(strPathPythonLibs);
Python submit( "
import sys, subprocess
subprocess.check_call([
sys.executable, '-m', 'pip', 'install',
'--no-index',
f'--find-links={strPathPythonLibs}',
'numpy', 'pandas', 'scipy'
])
" );
Wissen Sie, wie das Problem behoben werden kann? Ich weiß, dass die Datei sys.exe den Pfad von JMP python.exe zurückgeben sollte, aber aus irgendeinem Grund gibt sie den Pfad von jmp.exe zurück. Wo wird die von JMP verwendete Datei python.exe verwendet?
Hallo!
Ja, sys.executable gibt den Pfad von jmp.exe zurück, anstatt der ausführbaren Python-Datei, die sich tatsächlich im selben Verzeichnis (jmp_python.exe) befindet. Die direkte Verwendung ist jedoch schwierig, da vor dem Ausführen von pip einige Umgebungsvariablen festgelegt werden müssen.
Sie könnten JMP die Datei jpip.bat für Sie generieren lassen. Diese Datei setzt alle Umgebungsvariablen, die für die ordnungsgemäße Funktion des Pip-Moduls von JMP-Python erforderlich sind.
Python Create JPIP CMD();
Nachdem Sie die Datei jpip.bat generiert haben (dies muss natürlich nur einmal erfolgen), können Sie sie mit zusätzlichen Argumenten in einem JSL-Skript wie folgt verwenden:
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!"", "install", "--no-index", "--find-links=\!"path/to/the/wheels\!"", "numpy", "pandas", "scipy"}), Read Function("text"));
Beachten Sie die Escape-Anführungszeichen. Ihre Pfade können Leerzeichen enthalten.
Alternativ können Sie die jpip.file direkt ändern (vorletzte Zeile):
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
Dann müssen Sie nur die Datei jpip.bat ausführen:
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));
Vielen Dank, es hat geklappt!