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:
Configuración del sistema:
- Versión JMP: 17
- Versión de Python: 3.9.13 (64 bits) (también probé la versión 3.13.1)
- Sistema operativo: Windows 10 (64 bits)
Medidas adoptadas:
- Instalé Python 3.9.13 y lo agregué a PATH.
- Paquetes de Python necesarios instalados: numpy, pandas, matplotlib, scipy, PyQt5.
- Set the environment variable
JMP_PYTHON_MODULE_PATH to C:\Program Files\Python39\python39.dll. - Instalación verificada de Python e instalaciones de paquetes a través del símbolo del sistema.
- Intenté ejecutar un script JSL simple para inicializar Python:
// 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();Asunto: JMP crashes and closes immediately upon running Python Init.
Pasos de solución de problemas tomados:
- Verificado la ruta de Python y la ubicación del archivo DLL.
- Desinstalé otras versiones de Python para evitar conflictos.
- Reinstalado JMP 17.
- Se revisaron los registros de JMP en busca de mensajes de error (no se encontró ninguno).
A pesar de estos esfuerzos, el problema persiste. ¿Alguien más ha tenido este problema o tiene alguna sugerencia sobre cómo resolverlo?
¡Gracias de antemano por tu ayuda!
¿Tiene la posibilidad de actualizar a JMP18?
La actualización es gratuita para todos los usuarios.
Además de muchas mejoras interesantes, ahora JMP + Python interactúan de maravilla : )
Desearía que dependiera de mí poder actualizarlo, pero la empresa para la que trabajo siempre recibe las nuevas actualizaciones de software con al menos un año de retraso.
Me comunicaría directamente con el soporte técnico de JMP y enviaría un ticket de problema.
soporte@jmp.com
Como ya han mencionado otros, JMP 18 te facilita mucho la vida con respecto a Python. JMP instala un Python 3.11 privado integrado que funciona de inmediato con JMP. Hacer que Python funcione con JMP 14-17 puede ser un desafío y fue la razón principal por la que JMP ahora se entrega con Python.
Primero elimine la variable de entorno JMP_PYTHON_MODULE_PATH
En segundo lugar, ¿está utilizando Python.org o Anaconda? Utilice Python.org.
En tercer lugar, JMP 17 es de 64 bits, por lo que debes utilizar Python de 64 bits.
Pude hacer que Anaconda funcionara, pero solo recorriendo el código fuente JMP en el depurador para configurar correctamente Python Init.
Además, JMP 14-17 no está diseñado para funcionar con entornos virtuales ( venv).
Las funciones Connect() y Init() de Python toman una variedad de parámetros que pueden resolver el problema.
Lo más sencillo que puedes probar es:
Python Init ( Use Python Version("3.9") );
Ya has probado:
Python Init (
Path("C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll") <BR />);
Por último, la forma de "fuerza bruta" es especificar tanto la ruta a la dll como el archivo sys.path de Python completo como una lista JSL. Inicie Python desde la línea de comandos y ejecute lo siguiente.
import sys
print ( sys.path )
Dando lo siguiente en mi máquina:
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']
>>>
Ahora puedes tomar la lista de Python [ ... ] y crear una lista JSL a partir de ella para pasarla a Python Init() como se muestra a continuación. Aquí los dos difieren, ya que el script a continuación se pegó de un script que ejecuté hace algún tiempo. Ejecuté el Python anterior hoy. En caso de duda, usa todo lo que Python mismo devuelve para su sys.path.
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)
]\");
Más allá de eso... Actualice a JMP 18.
Gracias, eliminar la variable env y pasar la lista sys.path al Python Init funcionó.