Python-Matplotlib-Import-DLL-Fehler beim Starten von JMPIch habe ein Python-Skript, das Pyplot aus Matplotlib importiert. Wenn ich dieses Python-Skript in einer beliebigen Situation außerhalb von JMP (über die Spyder IDE oder einfach über die Windows-Befehlszeile) ausführen, wird es problemlos ausgeführt. Wenn ich es jedoch mit JMPs Run Program-Funktionalität oder sogar nur mit OPEN starte, liegt ein Importfehler vor (siehe unten).
Ich habe den Importfehler von matplotlib nach oben ft2font eingegrenzt und kann ihn aus JMP heraus replizieren:
Names Default To Here( 1 );
RP = RunProgram(
Executable( "python.exe" ),
Options( {"-c \!"from matplotlib import ft2font\!""} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
und hier ist der Fehler:
RunProgram( /*object*/ )Traceback (most recent call last):
File "", line 1, in
ImportError: DLL load failed: The specified procedure could not be found.
wieder, wenn ich eine Eingabeaufforderung öffne und python.exe -c "von matplotlib import ft2font" ausführe, erhalte ich keine Fehlermeldung. Was passiert, wenn JMP Importe von Python-Paketen durcheinander bringt? Es gibt ein sehr ähnliches Problem ( siehe hier ), dass einige matplotlib-Benutzer im Allgemeinen über die Importe in font_manager.py verfügen, diese Personen können sie jedoch in keiner Situation verwenden, sondern nur, wenn Sie aus JMP heraus anrufen.
Re: Python matplotlib-Import-DLL-Fehler beim Starten von JMPOK, ich habe dieses Problem gelöst und es ist JMPs Schuld.
Es gibt eine zlib.dll in der JMP-Installation. Da JMP sich vor dem Start von Windows-Befehlen zum PATH hinzufügt, stellte Python fest, dass zlib.dll gefunden wurde, bevor es die zlib.dll fand, die unter C: \ Anaconda3 \ Library \ bin \ zlib lebt .dll auch wenn Sie das Verzeichnis zuerst über eine Batchdatei gewechselt haben.
Ich musste eine Batchdatei erstellen, die zuerst das Verzeichnis außerhalb von JMP ändert (wo das Cmd-Fenster beginnt), JMP mit dem Befehl set aus dem Pfad entfernt und dann wie unten beschrieben mein Python-Skript startet
cd c:\
set PATH=%PATH:C:\Program Files\SAS\JMPPRO\14;=%
pythonw.exe "my_gui_app.py"
Meine Python-App wird jetzt von einer JMP-Schaltfläche aus mit dem Befehl jsl Run Program gestartet, der die Batchdatei aufruft.
Re: Python matplotlib-Import-DLL-Fehler beim Starten von JMPHmm. Ich bin mir nicht sicher, was es sein könnte. Ich führe jedoch eine Vanilla-Python-Installation und keine Anaconda-Distribution aus.
ver = "Python 3.6.4";
Re: Python matplotlib-Import-DLL-Fehler beim Starten von JMPSowohl in JMP mit dem von Ihnen angegebenen Code als auch in der Befehlszeile erhalte ich dieselbe Version:
ver = "Python 3.6.6 :: Anaconda custom (64-Bit)";
Re: Python matplotlib-Import-DLL-Fehler beim Starten von JMPWelche Python-Version verwendest du?
Diese Fehlermeldung wird angezeigt, wenn das Skript mit Python 2.7 ausgeführt wird, nicht jedoch mit Python 3.6. Ich bekomme in beiden Versionen, in JMP und in der Befehlszeile dasselbe Verhalten.
Wenn Sie über mehrere Python-Installationen verfügen, können Sie das folgende Skript verwenden, um die Version zu überprüfen, die JMP verwendet. Wenn die erwartete Version nicht verwendet wird, müssen Sie möglicherweise den vollständigen Pfad zur ausführbaren Python-Datei angeben.
ver = Trim(
Run Program(
Executable( "python.exe" ),
Options( "--version" ),
Read Function( "text" )
)
);
Show( ver );