JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch versuche, die neuen Funktionen in JMP 14 zum Ausführen von Python zu nutzen, aber es funktioniert nicht.Im Grunde finde ich meine Python-Installation nicht, obwohl sie unter bestimmten Umständen einfach abstürzt.
ich sah noch eine Diskussion Ich sagte, dass es in 14.1 Probleme damit gäbe, und schlug eine Problemumgehung zum Festlegen und Verwenden von Umgebungsvariablen vor Verwenden Sie die Python-Version("3.6") als Argument dafür Python Init() (beides habe ich erfolglos versucht).
Dann habe ich in den Versionshinweisen von 14.2 mehr darüber gesehen, einschließlich eines anderen Namens für die relevante Umgebungsvariable ...
https://www.jmp.com/support/help/14-2/how-jmp-finds-python-on-windows.shtml
Also habe ich ein Upgrade von 14.1 durchgeführt und festgestellt, dass es jetzt 14.3 gibt, und habe das erhalten. Wenn ich die Umgebungsvariablenanweisungen aus dem 14.2-Beitrag ausprobiere, erhalte ich die Meldung, dass dies veraltet ist und jetzt JMP_PYTHON_MODULE_PATH lauten sollte.Also habe ich es versucht, ich denken mit einem gültigen Pfad zur richtigen Datei, mit demselben Format wie im 14.2-Beitrag, aber immer noch nicht funktionierend.Mir ist aufgefallen, dass ich dies auch in meiner JMP15-Early-Adopter-Version ausprobiert habe und dieselben Ergebnisse erhalten habe, dieselbe Meldung, dass die Umgebungsvariable JMP_PYTHON_MODULE_PATH heißen sollte.
In allen Fällen (14.1, 14.3, 15 Early Adopter, verschiedene Versionen von Umgebungsvariablen) stürzt JMP in dieser Zeile sofort ab, wenn ich in Python Init() kein Argument habe.Wenn ich dort UsePythonVersion("3.6") habe, kommt die Fehlermeldung zurück, dass Python überhaupt nicht gefunden werden kann.
Eine Installation von Python kann auf diesem System nicht gefunden werden. Für die JMP-Python-Unterstützung ist Python-Version 3.0 oder höher erforderlich. beim Zugriff oder bei der Auswertung von 'Python Init' , Python Init/*###*/(Use Python Version( "3.6" ))
Nutzt das jemand erfolgreich?Wenn ja, fügen Sie etwas in Python Init() ein?
oder wenn Sie eine Umgebungsvariable festgelegt haben, wie heißt sie und wie sieht sie aus?Gibt es weitere Ratschläge zur Fehlerbehebung?
So sieht mein letzter Versuch einer Umgebungsvariablen aus: Ist das nicht das richtige Format? (Der frühere Beitrag sah so aus, als hätte die Umgebungsvariable geschweifte Klammern und doppelte Anführungszeichen, wie JMP es als JSL-Listenformat sehen wollte, aber das sieht aus wie das, was der 4.2-Beitrag sagt, und das andere Format hat bei mir auch nicht funktioniert ...Eigentlich eine python36.dll-Datei tut Scheint an diesem Ort zu sein...
Ich bin mir nicht sicher, ob ich ein seltsames Problem speziell für mein System habe, bei dem ich technischen Support benötige, oder ob ich einfach nicht die neueste Version bekomme, wie das funktionieren soll.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtDie Verwendung der Umgebungsvariablen war nie der bevorzugte Weg. Die JSL-Skriptparameter für Python Init() oder Python Connect() sollten immer die endgültigen Werte sein. Alle Parameter sind optional, aber die Angabe des Pfads zur python3x.dll und als letzten Ausweg das Hinzufügen von sys.path sollte den Python vollständig angeben. Die Python-Integration hat die Python-Erkennung seit JMP 14 deutlich verbessert. An diesem Punkt ist die Verwendung der Umgebungsvariablen wahrscheinlich kontraproduktiv und sollte nicht verwendet werden (es sei denn, Sie haben Zeit, mit Knöpfen herumzuspielen und alles andere schlägt fehl, es handelt sich um einen alternativen Codepfad). In JMP 16.1 und neuer sollten die JSL-Skriptparameter alles andere überschreiben ...
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch weiß, dass dies eine etwas späte Antwort ist, aber dieses Thema muss für neuere Versionen von JMP und Anaconda bearbeitet und aktualisiert werden.Bitte beachten Sie, dass es mir am 24.08.2021 gelungen ist, Python 3.8 mit JMP 16 zu integrieren.
Im direkten Widerspruch zu der in diesem Thread veröffentlichten „Lösung“ sollten Sie KEINE Umgebungsvariablen ändern.
TUN.
NICHT.
Diese „Lösung“ führte dazu, dass meine Integration und Entwicklung mehrere Wochen lang scheiterte.Nach der Installation von JMP oder der Aktualisierung von JMP sollten Sie eine neue Version von Anaconda installieren (Anaconda Navigator kann verwendet werden) und sicherstellen, dass Ihre Basisumgebung (Root-Umgebung) in Anaconda mindestens 3.8.3 ist.Ich habe auch mit Erfolg auf 3.8.8 getestet.
Sie können Ihren Pfad und Ihre Installation wie folgt überprüfen:
- Navigieren Sie zu C:\Programme\SAS\JMP\\ (falls Sie es hier nicht sehen, überprüfen Sie: C:\Programme (x86)\SAS\JMP\\)
- Doppelklicken Sie auf InstallChecker.exe (es könnte auch nur Install Checker heißen)
- Nachdem der Bericht angezeigt wird, wählen Sie „Im Browser öffnen“
Sie sollten dann eine XML-Datei sehen und am Ende sollten Sie Folgendes sehen:
-
"/>
"/>
"/>
"/>
"/>
In meinem Fall war die Integration erfolgreich, nachdem ich die Umgebungsvariablen wie folgt geändert habe:
"/>
"/>
Ich hoffe, das hilft und würde dringend empfehlen, die Lösung in diesem Thread zu entfernen, da sie einfach nicht funktioniert.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtJMP 15.0 leidet immer noch unter dem gleichen Problem. Ich habe das verlinkte Anaconda ohne die PATH-Option installiert und es hat funktioniert.
Beachten Sie, dass dieses Paket ziemlich alt ist, daher müssen Sie Ihre Pakete conda aktualisieren und dabei darauf achten, nicht Python selbst auf 3.6.5 zu aktualisieren (3.6.9 hat bei mir nicht funktioniert).
Ich hoffe, dass es in den nächsten Versionen behoben wird.
@FN schrieb:
Ich kann bestätigen, dass es mit Windows 10 und JMP 14.2 sofort funktioniert, wenn:
Anaconda Python 3.6* 64bit ist installiert > https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
und die PATH-Option ist aktiviert (keine Administratorrechte erforderlich)

Mir ging es eher um die Möglichkeit, Add-Ins mit einer portablen Python-Version bereitzustellen, sodass Benutzer sich nicht mit der Anaconda-Installation, den Umgebungen und der Versionierung herumschlagen müssen.
Danke für die Hilfe. Wir freuen uns auf eine großartige Python-Integration in den folgenden Updates.
(*) Bei der aktuellen Version von Anaconda stürzt JMP mit dieser Konfiguration ab.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtWas die Bereitstellung betrifft, denke ich, dass es in Ordnung sein wird, sobald Python andere Benutzerinstallationen nicht stört.
Ich versuche zum Beispiel, Python aus JMP 15 EA8 aufzurufen, das sich in einem bestimmten Ordner befindet.
Dieser Ordner enthält alle Installationsdateien von Anaconda/Miniconda, die ich vor der Deinstallation in einen Ordner kopiert habe. Der Code funktionierte, als er installiert wurde. Nun scheint es, dass JMP den von mir angegebenen Pfad nicht verwendet.
Set Environment Variable( "JMP_PYTHON_MODULE_PATH",
"\["", "C:/Users/xxx/JMP_scripting/python/miniconda3/python36.zip",
"C:/Users/xxx/JMP_scripting/python/miniconda3/DLLs",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/Pythonwin"]\"
);
Python Init (Path("C:\Users\xxx\JMP_scripting\python\miniconda3"),
Init Trace("TRUE"),
Debug Print Statements ("TRUE"),
Debug Print Output("TRUE") );
Python Submit( "\[basket = ["apple", "orange", "pear"]
print(basket)]\" );
Python Term();
Fehler in JMP 15 EA8

Fehler in JMP Pro 14.2:
Eine Installation von Python kann auf diesem System nicht gefunden werden. Für die JMP-Python-Unterstützung ist Python-Version 3.0 oder höher erforderlich. beim Zugriff oder bei der Auswertung von 'Python Init' , Python Init/*###*/(Path(
„C:\Benutzer\xxx\JMP_scripting\python\miniconda3“
))
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtHübsch! Das ist ein toller Anwendungsfall.
Bei der Suche nach dem idealen JMP + Python-Workflow ist es erwähnenswert, dass JMP (Pro) Python-Scoring-Code für JMP-Modelle generieren kann. Das unterstützt die Integration in die andere Richtung: die Übertragung von JMP-Funktionen in die Python-Welt.
Angenommen, Sie möchten ein JMP-Modell auf eine große Datentabelle in Oracle anwenden, können Sie das Modell in Python konvertieren und es mithilfe von UDFs in der Datenbank bewerten (die Unterstützung scheint jedoch experimentell zu sein):
https://oracle.github.io/oracle-db-mle/python/
Oder Sie könnten Ihr JMP-Modell mit Ihrer Python-Kollegin teilen, damit diese es in einem Jupyter-Notebook ausführen kann usw.
Außerdem erleichtert JMP 15.0 die Anzeige externer Bilder als Miniaturansichten in den Tooltips Ihrer Datenvisualisierung. Das würde die Notwendigkeit, sie direkt in Ihre JMP-Tabellen zu importieren, reduzieren/eliminieren und sie kleiner halten. Es gibt natürlich Leistungseinbußen, aber es könnte ein lohnender Kompromiss sein. Achten Sie darauf.
Danke für das Teilen! Halten Sie uns über Ihre Reise auf dem Laufenden!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtDas sieht toll aus – Danke!Ich habe mindestens ein paar Wochen lang keine Zeit, es auszuprobieren (und ich habe meine Python-Installation ohne virtuelle Umgebung komplett überarbeitet, daher wird es einige Zeit in Anspruch nehmen, dies auszuprobieren), aber ich werde es unbedingt bald testen.
Was meiner Python-Nutzung wirklich den Anstoß gegeben hat, ist die Klassifizierung von Bildern mit Tensorflow und Keras.Ich führe ein JMP-Skript aus, das relevante Bilder abfragt, Python aufruft, um mein Modell auszuführen, und die Ergebnisse dann an Oracle weiterleitet.Diese ganze Aufgabe werde ich am Ende wahrscheinlich in Python erledigen, aber ich erledige sie in JSL, weil ich darin bisher viel besser beherrsche – ich lerne nur Python – und ich bereits über ein komplettes Schema zum Ausführen automatisierter JSL-Jobs verfüge , verfügen über Funktionen zum Übertragen von Tabellen an unser Oracle usw.
Obwohl ich dachte, dass das gesamte Projekt nicht unbedingt mit JMP zu tun haben würde, fand ich tatsächlich, dass es wirklich nützlich ist, Bilder in einer JMP-Tabelle zusammen mit anderen Daten zu haben, wo mit ihnen auf alle üblichen JMP-Arten interagiert werden kann – Sortieren, Auswählen basierend auf anderen Datenspalten usw. Das hat mich dazu angespornt, eine Reihe anderer bildbezogener Add-Ins zu erstellen.Es bleibt abzuwarten, ob in meinem Projekt letztendlich ein echter Bedarf besteht, Python während einer interaktiven JMP-Live-Sitzung aufzurufen, oder ob sie getrennt sein können (ein Tool, das die Ergebnisse des TF-Modells interaktiv überprüft, indem es lediglich Ergebnisse von Oracle abfragt und nicht direkt aufruft). Python, um Modelle live auszuführen?), aber ich verwende sie derzeit zusammen.
Wie auch immer, das ist das Nicht-in-JMP-Ding, das ich derzeit mit Python verwende. Ich versuche, mehr über Python zu lernen und habe Kollegen, die darin Experten sind, und ich denke, dass ich wahrscheinlich noch mehr Dinge finden werde, bei denen ich Python tatsächlich aufrufen möchte, um seine Fähigkeiten mit JMP zu verbinden.
Danke!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtHallo @hardner ,
Gut zu wissen, dass Sie Python häufiger mit JMP verwenden. Wenn Sie uns mitteilen können, was Sie getan haben, würden wir es gerne wissen!
Bezüglich der Unterstützung virtueller Umgebungen verstehe ich Sie. Es macht einen großen Unterschied, wenn es darum geht, Ihre Abhängigkeiten organisiert zu halten UND Ihren Kollegen dabei zu helfen, Ihre Umgebung zu reproduzieren, um Ihre Add-Ins auszuführen.
Deshalb habe ich eine kleine Bibliothek zusammengestellt, die bei genau diesem Problem hilft. Überprüfen Sie bitte:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Viele Beispiele, getestet in 14.3 und 15.1. Aber zumindest vorerst nur für Windows und Anaconda-spezifisch.
Lassen Sie mich wissen, ob es für Sie funktioniert!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtHallo!
Ich greife einfach als OP noch einmal auf diesen Thread zurück, um zu sagen ...
- Ich verwende Python seit meinem ursprünglichen Beitrag häufiger und das, was ich sagte, dass es für mich funktioniert, hat weiterhin funktioniert.:) 
- Ich schätze die Bemühungen, Python zu unterstützen, umso mehr, dass ich jetzt bestimmte Dinge gefunden habe, für die ich es verwenden kann. Danke!
- Wie FN finde ich das Teilen von Add-Ins, die Python aufrufen, problematisch. Ich teile viele Add-Ins.Ich verwende dies jetzt nur für mich selbst und für Jobs, die ich ausführe und die dann Ergebnisse mit anderen teilen, aber nicht in Skripten, die von anderen ausgeführt werden.Ich müsste komplizierte Anweisungen zur Installation von Python und Paketen geben und mir Gedanken darüber machen, ob die einzelnen Versionen zusammenarbeiten (dasselbe Problem tritt bei R auf, das ich verwende, aber nicht in gemeinsam genutzten Skripten).Wenn jedoch eine bestimmte Version in JMP gekapselt wäre, würde dies die Möglichkeiten einschränken, die wir damit machen können.Ich denke immer noch, dass die Unterstützung virtueller Umgebungen vielleicht helfen könnte. Dann könnte ich Benutzer anweisen und unterstützen, eine Installation gemäß meinen Spezifikationen für ein bestimmtes Tool einzurichten, das sie verwenden möchten, ohne andere Python-Aktivitäten auf ihrem Computer zu beeinträchtigen.Aber ich bin mir nicht wirklich sicher, was das Beste wäre, und bin nicht besonders daran interessiert, Fehler bei Python-Installationen der Benutzer zu beheben.Ich stimme also nur zu, dass es nicht ideal ist, und stelle fest, dass ich ein gewisses Interesse daran habe, diese Fähigkeit stärker zu nutzen.
Danke!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch kann bestätigen, dass es mit Windows 10 und JMP 14.2 sofort funktioniert, wenn:
Anaconda Python 3.6* 64bit ist installiert > https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
und die PATH-Option ist aktiviert (keine Administratorrechte erforderlich)

Mir ging es eher um die Möglichkeit, Add-Ins mit einer portablen Python-Version bereitzustellen, sodass Benutzer sich nicht mit der Anaconda-Installation, den Umgebungen und der Versionierung herumschlagen müssen.
Danke für die Hilfe. Wir freuen uns auf eine großartige Python-Integration in den folgenden Updates.
(*) Bei der aktuellen Version von Anaconda stürzt JMP mit dieser Konfiguration ab.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch bin mir nicht sicher, ob ich Ihre Frage verstehe. Die Installation von Python für alle Benutzer erfordert zwar Administratorzugriff, für die Verwendung des installierten Python ist jedoch kein Administratorzugriff erforderlich. Für die Installation oder Ausführung eines JMP-Add-Ins mit dem Namen Python wäre kein Administratorzugriff erforderlich. Ja, zusätzliche Python-Pakete, die für alle Benutzer installiert werden, erfordern Administratorzugriff. Sie sollten in der Lage sein, lokale Site-Pakete pro Benutzer zu installieren, für deren Installation kein Administrator erforderlich wäre. Das ist etwas, was ich schon immer testen wollte, aber ich hatte die Gelegenheit, es auszuprobieren. Möglicherweise müssen Sie den sys.path aktualisieren, um den Speicherort der lokalen Pakete der Site hinzuzufügen.
Was die JMP 15-Dokumentation betrifft, weiß ich, dass einige dieser Diskussionen Eingang gefunden haben. Leider hat es vor dem Cutoff nicht alles in die Dokumentation geschafft. Wir werden daran arbeiten, den Rest über die Wartungsversionen bereitzustellen.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtFür die Installation für alle Benutzer sind außerdem Administratorrechte erforderlich, was bei der Verteilung eines Add-Ins, das Python aufruft, nicht praktisch ist.
Wird die Dokumentation von JMP 15 das enthalten, was hier besprochen wurde?
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtWir konnten das plötzliche Beenden von JMP beim Versuch, Python 3.7 zu laden, auf einem Entwicklungscomputer nachvollziehen.Es stellt sich heraus, dass wir (JMP) nicht die Einzigen sind, die Probleme mit Python 3.7 und Python 3.8 haben, insbesondere im eingebetteten Fall.Der Fehler, den wir von Python erhalten haben, ist:
Schwerwiegender Python-Fehler: Der Dateisystem-Codec konnte nicht geladen werden
Unbehandelte Ausnahme bei 0x00007FFE84F9B64E (ucrtbase.dll) in Jmp.exe: Schwerwiegender Programmabbruch angefordert.
Der Die derzeitige Lösung besteht darin, entweder Python 3.6.5 oder neuer 3.6.x zu verwenden, oder Sie müssen Python 3.7.x unter Windows als Installation für alle Benutzer installieren, nicht nur für Sie als lokalen Benutzer, UND Sie MÜSSEN die Option zum Einfügen auswählen die Python in Ihrem PATH.Dies widerspricht direkt dem Installationsdialog von Anaconda3 und warnt davor, es nicht in den Pfad einzufügen.
Mein Entwicklungscomputer funktioniert einwandfrei, wenn 3.7.1 als systemweite Installation installiert ist, und ist der Standard-Python im Pfad.Auf dem Computer meines Kollegen, auf dem wir den plötzlichen Abbruch von JMP reproduzieren konnten, haben wir Python 3.7.1 mit den Standardinstallationsoptionen installiert, was dazu führte, dass eine lokale Installation nicht im Pfad erfolgte.Wir konnten verhindern, dass JMP beendet wird, indem wir die Umgebungsvariable PYTHONHOME= 'the anaconda3-Verzeichnis' setzen. Aber selbst hier konnten wir es nicht dazu bringen, Numpy, Scipi, Pandas oder SQLite3 zu laden, nicht einmal über eine Konsoleneingabeaufforderung. Wo auf meinem Rechner alles wie erwartet funktioniert.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtmehr zu UsePythonVersion("3.6"), nur für den Fall, dass es nützlich ist ....
Diese Zeile funktioniert nicht, wenn JMP zum ersten Mal geöffnet wird ...
Python Init(Use Python Version( "3.6" ), InitTrace( "True" ));
Folgendes zeigt das Protokoll von InitTrace() ...
OpPythonInit-Operator wird verarbeitet
Initialisierung der JMP-zu-Python-Schnittstelle starten
Fragen Sie HKEY_CURRENT_USER ab
Lesen von hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Gefunden hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Anzahl der Unterschlüssel=1
Unterschlüssel #=0 wird abgerufen
Unterschlüssel=3,6 Länge=3
Öffnender Unterschlüssel=3.6
Öffnungsschlüssel=3.6 Unterschlüssel=InstallPath
Abfragewert key=3.6 subkey=InstallPath
Abfragewert key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
Öffnungsschlüssel=3.6 Unterschlüssel=PythonPath
Abfragewert key=3.6 subkey=PythonPath
Erstellungspfad zur Version=3.6 der Python-DLL
Eine Installation von Python kann auf diesem System nicht gefunden werden. Für die JMP-Python-Unterstützung ist Python-Version 3.0 oder höher erforderlich. beim Zugriff oder bei der Auswertung von 'Python Init' , Python Init/*###*/(Use Python Version( "3.6" ), InitTrace( "True" ))
Dies passiert wiederholt, wenn ich die Zeile immer wieder ausführe, aber wenn ich diese Version ohne UsePythonVersion mache ...
Python Init(InitTrace( "True" ));
Es funktioniert nicht nur, sondern danach funktioniert auch die Originalversion mit dem Argument UsePythonVersion("3.6"), während diese JMP-Sitzung geöffnet ist.In diesem Fall zeigt das Protokoll dieser Init-Ablaufverfolgung Folgendes an.Der dort angezeigte Pfad sieht für mich in beiden Fällen gleich und korrekt aus ...
Fragen Sie HKEY_CURRENT_USER ab
Lesen von hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Gefunden hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Anzahl der Unterschlüssel=1
Unterschlüssel #=0 wird abgerufen
Unterschlüssel=3,6 Länge=3
Öffnender Unterschlüssel=3.6
Öffnungsschlüssel=3.6 Unterschlüssel=InstallPath
Abfragewert key=3.6 subkey=InstallPath
Abfragewert key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
Öffnungsschlüssel=3.6 Unterschlüssel=PythonPath
Abfragewert key=3.6 subkey=PythonPath
Erstellungspfad zur Version=3.6 der Python-DLL
Python-DLL-Pfad=C:\Benutzer\12470\AppData\Local\Continuum\anaconda3\python36.dll
sys.path Entry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\Lib
sys.path Entry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs
VOR:
/**********/
print(_JMPsys.path)
/**********/
['C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3 \\Lib', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs', 'C:\\Programme\\SAS\\JMP\\14', ' C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site- Pakete', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Babel-2.5.0-py3.6.egg', 'C: \\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\ \anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Pythonwin ']
NACH:
/**********/
print(_JMPsys.path)
/**********/
['', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Benutzer\\12470\\AppData\\Local\\Continuum \\anaconda3\\Lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs', 'C:\\Users\\12470\\AppData\\Local\ \Continuum\\anaconda3', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages', 'C:\\Users\\12470\\AppData \\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site- packets\\win32\\lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Pythonwin']
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtArbeiten!
Folgendes hat bei mir funktioniert:
Ich habe Anaconda mit einer archivierten Version für Python 3.6 neu installiert (um die Verwendung einer virtuellen Umgebung für 3.6 zu vermeiden).Hier ist, wo es installiert wurde, genau wie zuvor, nur ohne zwei weitere Ebenen für die virtuelle Umgebung im Ordner anaconda3):
C:\Benutzer\12470\AppData\Local\Continuum\anaconda3\python36.dll
Setzen Sie die Umgebungsvariable JMP_PYTHON_MODULE_PATH auf den oben genannten Pfad für python36.dll
Das Argument UsePythonVersion("3.6") wurde in Python init() nicht verwendet, was den Fehler „Installation kann nicht gefunden werden“ verursacht.
Nichts, was ich nach der Neuinstallation versuche, hat bisher zu einem Absturz geführt.Zugegebenermaßen habe ich nicht viel getan, aber es scheint, dass etwas an der virtuellen Umgebung den Absturz verursacht hat (?).Die begrenzten Tests, die ich bisher durchgeführt habe, funktionieren sowohl in 14.3 als auch in 15EA.
Danke!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrt@Paul_Nelson & @Jeff_Perkinson ,
JMP wurde auf 14.3 aktualisiert und kann bestätigen, dass der Absturz weiterhin besteht. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtDas allererste, was Sie tun sollten, ist ein Update auf eine neuere Version von JMP 14. Die ursprüngliche Version 14.0.0 funktionierte einwandfrei, wenn sie die richtige Python-Installation automatisch erkennen konnte. Wenn Python jedoch nicht richtig gefunden werden konnte, funktionierte keine der anderen Methoden überhaupt gut. Die Arbeit in den aufeinanderfolgenden Updates 14.1, 14.2 usw. hat dazu geführt, dass die anderen Alternativen besser funktionieren, die Überprüfung von Umgebungsvariablen und die Verwendung der Python-Init()-Variablen. Möglicherweise funktioniert es in Ihrer spezifischen Umgebung immer noch nicht, aber dies ist der erste Ausgangspunkt.
Sie sollten weiterhin mit dem technischen Support von JMP zusammenarbeiten. Durch die Inanspruchnahme des technischen Supports profitieren alle JMP-Kunden von unseren Lösungen zu diesem Thema. Im Moment müssen wir uns noch weiter in den Code vertiefen, den Code zusätzlich instrumentieren und den Code zusätzlich kugelsicher machen, vielleicht sogar das Schreiben eines Test- oder Diagnoseprogramms.
Danke für Ihre Geduld.
Paul
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtFür das, was es wert ist, sind bei mir auf jeden Fall beide 64-Bit-Versionen und bei mir kommt es auch zu Abstürzen.Das einzige Mal, dass meine Version bei Python Init() nicht abstürzt, ist mit dem Argument „Use Python Version()“, wenn ich die Meldung „Kann nicht gefunden“ erhalte.Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrt@hardner Und @Paul_Nelson ,
Paul, dem kann ich zustimmen @hardner 's Beobachtungen. Ist es in Ordnung, Sie zu bitten, morgen oder vielleicht nächste Woche ein Webex mit uns durchzuführen, was auch immer für Sie funktioniert, bei dem Sie sich unsere Installationen ansehen und uns sagen können, warum es nicht funktioniert? Sie können dann wahrscheinlich einen erneuten Blog-Artikel über die Community veröffentlichen, der auf den Erkenntnissen basiert, die wir aus dem Treffen mitnehmen? Könnten Sie das tun?
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtFür das, was es wert ist, sind bei mir auf jeden Fall beide 64-Bit-Versionen und bei mir kommt es auch zu Abstürzen.Das einzige Mal, dass meine Version bei Python Init() nicht abstürzt, ist mit dem Argument „Use Python Version()“, wenn ich die Meldung „Kann nicht gefunden“ erhalte.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch würde auch auf die neueste Version von JMP 14 aktualisieren. In jeder Version von JMP 14.x wurden zusätzliche Arbeiten durchgeführt, um das Auffinden und ordnungsgemäße Laden von Python zu verbessern.Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch hatte auf ein Missverhältnis gehofft und Ihre Probleme wären plötzlich gelöst.
Ich habe gerade zusätzlichen Code hinzugefügt, um Ausnahmen abzufangen, wenn wir versuchen, Python zu laden. Ich werde mir auch das Hinzufügen von Code ansehen, damit der Init Trace („TRUE“) sowohl in eine Datei als auch in das Protokoll schreibt, damit wir eine Spur des Ausführungspfads für die Python-Initialisierung erhalten können. Hoffentlich sollten beide im nächsten JMP 15 EA enthalten sein. (Ich bin mir nicht sicher, wann der nächste fällig ist).
Paul
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrt@Paul_Nelson ,
In der Tat. Ich habe überprüft und validiert, dass sowohl JMP als auch Python 64-Bit sind.


Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtHaben Sie überprüft, dass Ihr Python und Ihr JMP die gleiche Bit-Neinheit haben? 32-Bit oder 64-Bit. Das Fehlen einer Dump-Datei weist darauf hin, dass JMP wahrscheinlich ausfällt, wenn es versucht, Python als gemeinsam genutzte Bibliothek zu laden. Wenn 32-Bit-JMP / 64-Bit-Python oder 64-Bit-JMP / 32-Bit-Python nicht übereinstimmen, ist ein Absturz ziemlich sicher.
Das ist etwas, das JMP vor dem Laden zu überprüfen versuchen sollte, und etwas, das wir abzufangen versuchen sollten, aber es könnte immer noch ein nicht behebbarer Zustand sein. Aber es wäre gut, wenn JMP eine Benachrichtigung geben könnte.
Paul
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrt@Paul_Nelson ,
Ich habe einen laufenden Fall mit dem technischen Support zu diesem Problem – SAS 7612709398.
Ich habe versucht, den Trace wie von Ihnen vorgeschlagen einzubinden, aber das führt zum Absturz von Jmp. Ich sehe jedoch keine generierte .dmp- oder .jer-Datei, die ich dem technischen Support zur Verfügung stellen kann.
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtWir beschäftigen uns mit der Unterstützung virtueller Python-Umgebungen.
Die Kehrseite ist diese Frage:
Ist es zu schwierig, die verschiedenen vom Benutzer installierten Versionen von Python zu unterstützen, um sie zum Laufen zu bringen und weiterzuführen?
Wenn ja, könnte die Lösung eine von JMP bereitgestellte und installierte Version von Python sein, die getestet wurde und bekanntermaßen problemlos mit JMP funktioniert. Zu den damit verbundenen Problemen gehört die Unterstützung der Installation lokaler Pakete und Erweiterungen in einer von JMP bereitgestellten Python-Umgebung.
Im Moment würden wir es vorziehen, das vom Benutzer installierte Python zu unterstützen, aber wie Sie erfahren haben, kann die Vielfalt in der freien Natur dies zu einer Herausforderung machen.
Danke,
Paul
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtVielen Dank für all das.
Ich bin mir ziemlich sicher, dass mein Problem darin besteht, dass „JMP derzeit keine virtuellen Umgebungen kennt“.
Nachdem ich die neueste Version von Anaconda mit Python 3.7 installiert hatte und dann feststellte, dass ich Tensorflow verwenden möchte, der 3.6 erfordert, habe ich die erste der hier beschriebenen Optionen ausgeführt ... eine Python3.6-Umgebung eingerichtet.
https://docs.anaconda.com/anaconda/user-guide/faq/#anaconda-faq-35
Angesichts der Tatsache, dass ich gerade erst mit Python beginne und keinen besonderen Bedarf an 3.7 habe – soweit ich weiß – denke ich, dass ich vielleicht alles deinstalliere und mit einer anderen Option von vorne beginne, wie einem archivierten Anaconda-Installationspaket mit 3.6 . Ich werde sehen, wie das geht.
Aber es scheint, dass diese Art von „Für unterschiedliche Dinge sind unterschiedliche Versionen erforderlich“ weit verbreitet ist, wie es auch bei R der Fall ist. Die Lektüre, dass dies der Fall war, hat mich dazu gebracht, mich mit dieser komplizierter aussehenden Option zu befassen, und der obige Link war nicht der einzige Dort habe ich den Rat gesehen, eine virtuelle Umgebung zu verwenden.Ich frage mich also, ob Sie mehr zu den Plänen sagen können, wie man es anweisen kann, in einer bestimmten virtuellen Umgebung zu arbeiten.
Das InitTrace("TRUE")-Ding führt bei mir zum Absturz von JMP.Aber vielleicht wäre es anders, wenn mein Weg nicht eine virtuelle Umgebung beinhalten würde. Ich werde daran arbeiten und einen technischen Support-Fall eröffnen, um weitere Hilfe zu erhalten.Danke!
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch weiß, dass es für uns genauso frustrierend ist wie für Sie. Es fällt uns schwer, das Problem auf unseren Maschinen zu reproduzieren, aber wir wissen, dass einige Kunden Probleme haben. Die meisten unserer Maschinen sind ähnlich und haben das gleiche Unternehmensimage ... Wichtig ist, dass die Bitanzahl von JMP und Python übereinstimmen muss. Da JMP Python als gemeinsam genutzte Bibliothek lädt, können Sie JMP und Python mit unterschiedlicher Bitanzahl nicht mischen. Wenn Sie über 32-Bit-JMP verfügen, müssen Sie auf eine 32-Bit-Python 3.6.1 oder neuer verweisen. Wenn Sie über 64-Bit-JMP verfügen, muss es sich um ein 64-Bit-Python 3.6.1 oder höher handeln. Wir haben festgestellt, dass die Erfolgsaussichten am größten sind, wenn Sie nur eine einzige Python-Installation auf Ihrem System haben. Wenn in JMP 14.1 mehr als einer auf dem System vorhanden wäre, würde nicht einmal versucht, Python zu laden. JMP kennt derzeit keine virtuellen Umgebungen.
Wenn Sie Probleme haben, versuchen Sie bitte die folgende Option in Ihrem Python Init()
Python-Init( Init Trace("TRUE") );
Diese Option, die wahrscheinlich (leider) nicht dokumentiert ist, führt dazu, dass JMP viele Details darüber ausgibt, wo sich Python seiner Meinung nach befindet, einschließlich der angezeigten Pfade und der entdeckten Registrierungseinträge für Python. Bitte geben Sie die Ausgabe an, wenn Sie den technischen Support kontaktieren.
Sie können bestimmen, welche Bittiefe Sie mit dem folgenden Python-Skript in Ihrer Umgebung ausführen
Struktur importieren
print( struct.calcsize("P") *8)
Dies sollte 32 oder 64 ausgeben, basierend auf der Bitanzahl des ausgeführten Python.
Hinweis: JMP 14 kann je nach Version entweder 32-Bit oder 64-Bit sein. Shrink-Wrap ist immer 32-Bit
JMP 15 ist nur 64-Bit.
Ich werde versuchen, Python Init() und die Umgebungsvariablen vollständig zu dokumentieren.
JMP 15 fügt zwei neue Umgebungsvariablen hinzu, nach denen gesucht wird:
JMP_LIB_PYTHON_PATH – Dies ist der vollständige Pfad zur gemeinsam genutzten Bibliothek.
JMP_PYTHON_MODULE_PATH – Pythons sys.path, wie man es in Windows- oder MacOS-Umgebungsvariablen erwarten würde. Unter Windows eine durch Semikolons getrennte Liste, unter MacOS eine durch Doppelpunkte getrennte Liste, KEINE JSL-Liste.
Auf meinem Rechner habe ich Anaconda 3.7.1 64-Bit unter C:\ProgramData\Anaconda3 installiert
so würde es aussehen
JMP_LIB_PYTHON_PATH=C:\ProgramData\Anaconda3\python37.dll
Der Pfad zur DLL sollte ausreichen... und ausreichen, damit Python Init() ohne Parameter verwendet werden kann. Wenn JMP_LIB_PYTHON_PATH und JMP_PYTHON_MODULE_PATH angegeben sind, sollte Python auch mit mehr als einem Python-Interpreter vollständig spezifiziert sein und Python Init() sollte einfach funktionieren.
Wie besprochen „Python-Systempfad“ als eine Umgebungsvariable wurde veraltet, da es nicht den normalen Konventionen für Shell-Umgebungsvariablen unter Windows oder MacOS entspricht. Der Variablenname enthält Leerzeichen und erwartet eine JSL-Liste von Pfadkomponenten { , }, NICHT die erwarteten durch Doppelpunkte getrennten Pfade unter UNIX oder die durch Semikolons getrennten Pfade, die unter Windows erwartet werden.
Wir haben versucht, den Python-Umgebungsvariablen PYTHONPATH und PYTHONHOME mehr Aufmerksamkeit zu schenken. Aus der Python-Dokumentation lautet die Beschreibung dieser Variablen:
PYTHONHOME
Ändern Sie den Speicherort der Standard-Python-Bibliotheken. Standardmäßig werden die Bibliotheken durchsucht
prefix/lib/pythonversion und exec_prefix/lib/pythonversion, wobei prefix und exec_prefix stehen
Installationsabhängige Verzeichnisse, beide standardmäßig auf /usr/local.
Wenn PYTHONHOME auf ein einzelnes Verzeichnis festgelegt ist, ersetzt sein Wert sowohl prefix als auch exec_prefix.
Um unterschiedliche Werte für diese anzugeben, legen Sie PYTHONHOME auf prefix:exec_prefix fest.
PYTHONPATH
Erweitern Sie den Standardsuchpfad für Moduldateien. Das Format ist das gleiche wie das der Shell
PATH: ein oder mehrere Verzeichnispfadnamen, getrennt durch os.pathsep (z. B. Doppelpunkte unter Unix oder).
Semikolons unter Windows). Nicht vorhandene Verzeichnisse werden stillschweigend ignoriert.
Zusätzlich zu normalen Verzeichnissen können einzelne PYTHONPATH-Einträge auf Zip-Dateien verweisen
Enthält reine Python-Module (entweder in Quell- oder kompilierter Form). Erweiterungsmodule
kann nicht aus ZIP-Dateien importiert werden.
Der Standardsuchpfad ist von der Installation abhängig, beginnt jedoch im Allgemeinen mit prefix/lib/pythonversion
(siehe PYTHONHOME oben). Es wird immer an PYTHONPATH angehängt.
Wie oben beschrieben wird vor PYTHONPATH ein zusätzliches Verzeichnis in den Suchpfad eingefügt
unter Schnittstellenoptionen. Der Suchpfad kann innerhalb eines Python-Programms als Variable sys.path manipuliert werden.
Die Reihenfolge, in der JMP 15 nach den Umgebungsvariablen sucht:
Rangfolge der Umgebungsvariablen und des JSL-Skripts vom niedrigsten zum niedrigsten Wert
- Wird im JSL-Skript in angegeben Python-Init( Weg("") , Verwenden Sie die Python-Version("") , Python-Systempfad( { "",... } ), ... )
- Wird in den System-/Shell-Umgebungsvariablen angegeben
- Automatisch lokalisiert
- Registry, gefunden auf PATH var oder System-Shell zum Ausführen von Python oder Conda, ... und sollte ein lokal installiertes Python bevorzugen
über eine systemweite Installation von Python, falls beide vorhanden sind
JMP 14
Zuerst habe ich mir die Umgebungsvariable „Python sys path“ angesehen, die entweder der Pfad zur DLL oder der vollständige sys.path sein kann, ausgedrückt als JSL-Liste {"","",... }
PYTHONINSTALLPATH = der Pfad zum Verzeichnis der obersten Ebene, das die Python-Installation enthält, oder zum Verzeichnis, das die gemeinsam genutzte Python-Bibliothek enthält.
Der Python Init() Stellungnahme
Parameter:
Path() – Der vollständige Pfad zur DLL oder zum Python-Verzeichnis der obersten Ebene, das die DLL enthält.
Verwenden Sie Python Version() – Zeichenfolge in Anführungszeichen der Haupt-.Neben-Python-Version. Oftmals ausreichend, wenn mehr als ein Python gefunden wird.
Python sys path() – die JSL-Liste der in Anführungszeichen gesetzten Zeichenfolgenpfade, die dem Python-Wert sys.path entsprechen. Die Angabe dieser 3 sollte die Python-Installation vollständig spezifizieren und alle Umgebungs- oder Registrierungswerte überschreiben.
Init Trace("TRUE") – Debugging-Ausgabe während der Python-Initialisierung von JMP im JMP-Protokoll
Debug-Druckanweisungen („TRUE“); - Drucken Sie die Python-Anweisungen direkt in das JMP-Protokoll
Debug Print Output("TRUE"); - Python-Ausgabe direkt im JMP-Protokoll ausgeben
JMP 14 Python Init() akzeptiert optional auch Folgendes: Nur eine verwenden oder das andere und passend zum Bit-Niveau Ihrer JMP-Installation. 32-Bit-JMP kann nicht 64-Bit-Python verwenden und 64-Bit-JMP kann nicht 32-Bit-Python verwenden.
32-Bit-Python verwenden („TRUE“)
64-Bit-Python verwenden („TRUE“)
JMP 15 hat die oben genannten optionalen Parameter entfernt, da JMP 15 64-Bit ist und dies kann nur Verwenden Sie 64-Bit-Python. Alle Parameter zu Python Init() sind optional. Wenn die automatische Erkennung in der Registrierung oder die Umgebungsvariablen auf ein gültiges Python verweisen, gibt es nichts weiter sollen in Ihrem benötigt Python Init()
Bitte zögern Sie nicht, den technischen Support von JMP zu kontaktieren. Wir möchten, dass die Python-Funktionen in JMP nützlich sind und die Leistung von JMP verbessern. Wir wollen diese Probleme lösen, damit es einfach funktioniert.
Paul
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtFolgendes...
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtDanke! wird tun. Ich kann nur hinzufügen, dass ich auch versucht habe, path() der DLL in Python init() einzufügen, und das stürzt ebenfalls ab, anstatt sich zumindest nur darüber zu beschweren, dass es nicht gefunden werden kann. Insgesamt benötige ich wahrscheinlich auch Hilfe vom technischen Support, hatte aber gehofft, dass es nur eine Klarstellung gibt, die auch für andere nützlich wäre.Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrtIch kann das bestätigen, obwohl ich meine Anaconda-Distribution in C:\ installiert und eine Umgebungsvariable eingerichtet habe, wie im beschrieben Post , ich schaffe es nicht, es zum Laufen zu bringen. JMP stürzt immer noch ab. Ich werde Sie informieren, wenn ich eine Antwort vom technischen Support erhalte. Wenn Sie es herausgefunden haben, machen Sie bitte dasselbe
Betreff: JMP 14 Python-Fähigkeiten – funktionieren? Ich bin verwirrt@hardner ,
Ich sitze im selben Boot wie du. Ich versuche jetzt seit etwa 2 Wochen, JMP für Python zu konfigurieren. Ich habe SAS und R von JMP erfolgreich integriert, allerdings war die Python-Integration gelinde gesagt sehr unklar und langwierig. Ich bin enttäuscht, dass JMP 15 Early Adopter auch keine Verbesserungen zur Behebung dieser Integration bietet. Ich habe das auch aufmerksam verfolgt Post und hatte gehofft, dass das Problem in JMP 15 behoben wird und die Integration reibungsloser wird.
Ich verwende derzeit JMP 14 und Python 3.7.1. Mir wurde empfohlen, die Python/Anaconda-Distribution direkt unter dem C:/-Stammverzeichnis zu installieren, und ich werde es gleich versuchen. Falls das funktioniert, werde ich Ihnen hier mitteilen, was funktioniert hat, und ein Update durchführen.