Python matplotlib import dll error cuando se inicia desde JMPTengo un script de python que importa pyplot desde matplotlib. Cuando ejecuto este script de Python en cualquier situación fuera de JMP (desde dentro del IDE de Spyder o simplemente a través de la línea de comandos de Windows), se ejecuta correctamente. Pero cuando lo lanzo con la funcionalidad Ejecutar Programa de JMP, o incluso con OPEN, tiene un error de importación (ver más abajo).
He reducido el error de importación hacia abajo de ft2font desde matplotlib y puedo replicarlo desde JMP:
Names Default To Here( 1 );
RP = RunProgram(
Executable( "python.exe" ),
Options( {"-c \!"from matplotlib import ft2font\!""} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
y aquí está el error:
RunProgram( /*object*/ )Traceback (most recent call last):
File "", line 1, in
ImportError: DLL load failed: The specified procedure could not be found.
de nuevo, si abro un indicador de comando y ejecuto python.exe -c "desde matplotlib import ft2font", no obtengo ningún error. ¿Qué está pasando con JMP desordenando las importaciones de paquetes de Python? Hay un problema muy similar ( mira aquí ) que algunos usuarios de matplotlib tienen en general con las importaciones en font_manager.py pero esas personas no pueden usarlo en ninguna situación, para mí es solo cuando se llama desde JMP.
Re: Python matplotlib import dll error cuando se inicia desde JMPOK, resolví esto y es culpa de JMP.
Hay un zlib.dll viviendo dentro de la instalación de JMP y como JMP se agrega a PATH antes de ejecutar los comandos de Windows, Python encontró que zlib.dll encontró el zlib.dll que vive en C: \ Anaconda3 \ Library \ bin \ zlib .dll incluso si primero cambió el directorio a través de un archivo por lotes.
Tuve que hacer un archivo de proceso por lotes que primero cambia el directorio fuera de JMP (donde se inicia la ventana cmd), elimina JMP de la ruta con el comando set, luego inicia mi script de python como se muestra a continuación
cd c:\
set PATH=%PATH:C:\Program Files\SAS\JMPPRO\14;=%
pythonw.exe "my_gui_app.py"
Mi aplicación de Python ahora se inicia desde un botón JMP utilizando el comando Ejecutar Programa jsl que llama al archivo por lotes.
Re: Python matplotlib import dll error cuando se inicia desde JMPHmm No estoy seguro de lo que podría ser entonces. Sin embargo, estoy ejecutando una instalación de Python de vainilla y no una distribución de Anaconda.
ver = "Python 3.6.4";
Re: Python matplotlib import dll error cuando se inicia desde JMPTanto en JMP con el código que proporcionaste como en la línea de comandos, obtengo la misma versión:
ver = "Python 3.6.6 :: Anaconda personalizado (64 bits)";
Re: Python matplotlib import dll error cuando se inicia desde JMP¿Qué versión de python estás usando?
Recibo ese mensaje de error cuando ejecuto el script con Python 2.7 pero no con Python 3.6. Tengo el mismo comportamiento en ambas versiones, en JMP y en la línea de comandos.
Si tiene varias instalaciones de python, puede usar el siguiente script para verificar la versión que está usando JMP. Si no está utilizando la versión esperada, es posible que deba proporcionar la ruta completa al ejecutable de Python.
ver = Trim(
Run Program(
Executable( "python.exe" ),
Options( "--version" ),
Read Function( "text" )
)
);
Show( ver );