¿Cómo configurar Python para JMP 14?Soy muy nuevo en Python, así que espero que esta sea una pregunta fácil.Tengo instaladas las versiones 3.6 y 3.7 de Python.Instalé numpy, matplotlib, scipy y pdfkit en ambas versiones.Sin embargo, recibo errores en la ventana de registro cuando intento ejecutar ejemplos desde el índice de secuencias de comandos.
Para el ejemplo de obtención de Python:
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
Recibo los siguientes errores:
//:*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
/*:
/**********/
# Read a binary file containing doubles into an ndarray
x1 = _JMPnp.fromfile("C:\\Users\\pmroz\\AppData\\Local\\Temp\\eacac6a7-dd5e-4ceb-dcbd0248455fb787.csv", dtype=_JMPnp.float64, count=-1, sep="")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPnp' is not defined
x1 = [1, 2, 3];
x2 = .;
/**********/
# Import a JMP exported .csv file into a Data Frame
dt1 = _JMPpd.read_csv("C:\\Users\\pmroz\\AppData\\Local\\Temp\\8b6475be-aaf0-408b-d1cae4522f253881.csv")
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpd' is not defined
Send Expects Scriptable Object in access or evaluation of 'Send' , dt2 << /*###*/New Data View/*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init();
x1 = [1, 2, 3];
Python Send( x1 );
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();
¿Qué me estoy perdiendo?Gracias.
Re: ¿Cómo configurar Python para JMP 14?Aquí suceden un par de cosas para utilizar JMP y Python.
1. JMP tiene un lenguaje de secuencias de comandos y un registro para JSL.
* Al ver valores en JSL, puede evaluarlos y verlos en el registro, puede crearlos o colocarlos en tablas de datos, puede colocarlos en bases de datos o incluso dibujar resultados gráficos usted mismo.
* Puede escribir valores en un archivo.
2. Python es su propio entorno, a y b anteriores también son válidos en Python, pero mediante el uso de declaraciones y programas de Python. Al igual que el show de JSL muestra un valor JSL, la declaración print() de Python imprimirá una variable de Python.
En el ejemplo de Python Send() en la guía de secuencias de comandos
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
El envío de Python (“print(x)”); // está ejecutando el código Python (“print(x)”) e imprimiendo el valor de x como lo ve Python, es una variable separada de JSL x. y hasta el Python Send(x) no hay variable x en el lado de Python, solo el JSL x
Entonces, si por ejemplo el código anterior fuera
Names Default To Here( 1 );
Python Init();
x = [1, 2, 3];
Python Send( x );
x = [3,2,1];
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Python Send( dt );
Close( dt );
Python Submit( "print(x)" );
Python Submit( "print(dt)" );
Python Term();
Show( x );
Obtendrá del Python Submit ("print(x)") que x es 1, 2, 3
Pero del Show (x);
Obtendría el 3, 2, 1 que debe recordar cuando opera en dos entornos de secuencias de comandos diferentes.
Le sugiero que se familiarice con la exploración de las capacidades de JSL sin Python; hay toneladas de ejemplos de JSL y muchos materiales para comprender cómo trabajar con JSL. Y, al explorar nuevamente la programación en Python fuera de JMP, hay ejemplos demasiado numerosos para contar en Internet, incluidos sitios de tutoriales. Tener una buena familiaridad con cada idioma le dará una idea de las fortalezas y debilidades de cada idioma. Porque necesitas decidir dónde quieres hacer qué cálculos. Puede hacer todo en Python, pasando solo datos iniciales y devolviendo resultados, o puede hacer casi todo en JSL, llamando a Python para realizar algún cálculo o procesamiento que sea más fácil de realizar en Python que JSL, o cualquier combinación intermedia.
Pablo
Re: ¿Cómo configurar Python para JMP 14?Hola Pablo,
¿Cómo ves realmente todo lo que envías a Python en Python desde un archivo JSL? No tengo experiencia en hacer esto, pero cuando envío x1 como en el ejemplo que tienes y voy a una ventana de secuencias de comandos de Python, x1 no se almacena. ¿Tiene algún tipo de documentación paso a paso sobre esto?
Re: ¿Cómo configurar Python para JMP 14?Hola, también comencé a aprender Python en CETPA INFOTECH. No tengo mucho conocimiento todavía, pero todo lo que sé y uso lo comparto aquí:
Siga el enlace para descargar el código fuente comprimido disponible para Unix/Linux.
Descargar y extraer archivos.
Editar el archivo Módulos/Configuración si desea personalizar algunas opciones.
ejecute el script ./configure.
hacer.
hacer la instalación.
Después de leer la respuesta de Paul, entiendo brevemente y estoy de acuerdo con su solución.Re: ¿Cómo configurar Python para JMP 14?Hola Pablo,
Ya lo hice funcionar (al menos en una PC, en la otra hay un error cuando quiero importar numpy). Quería sugerir que, cuando trabaje en este tema, pueda configurarlo de una manera que permita elegir fácilmente entre diferentes entornos de Conda.
¿El problema con la transferencia de la tabla de datos a pandas es un problema conocido o estoy haciendo algo mal?
Gracias
gerd
Re: ¿Cómo configurar Python para JMP 14?Debe configurar Python Init() y/o las variables de entorno de su sistema para que apunten a la instalación de conda. Vea las respuestas anteriores a esta publicación de la comunidad. Hay ejemplos de configuración de parámetros dentro de Python Init() y de configuración de variables de entorno para que apunten a su instalación de Python.
Re: ¿Cómo configurar Python para JMP 14?Hola Pablo,
Solo estoy intentando enviar una tabla de datos a Python. Sin embargo, todas las columnas terminan en una columna de cadena con las columnas reales separadas por \t (ver imagen). ¿Alguna idea de qué sale mal aquí? ¿Necesita una versión especial de pandas (o una versión especial de matplotlib, ya que esto también provoca un error)?
Con respecto a la configuración de Python, sería fantástico si se pudiera seleccionar un entorno conda que debería usarse.

Saludos
gerd
Re: ¿Cómo configurar Python para JMP 14?Hola @Rob128 ,
El uso de una conexión bidireccional completa a Python a través de una instalación local de Python que permite a JMP enviar datos a Python, ejecutar código Python desde un script JSL,
devolver datos y resultados de programas Python y explorar interactivamente los resultados de Python en JMP se introdujo en JMP 14.
Como ha demostrado usando JMP 13 (con Ejecutar programa), puede controlar un programa externo usando stdin y stdout.
Los comentarios de @Pablo_Nelson se refieren a la implementación JMP 14 de la conexión bidireccional completa a Python y no a través de Ejecute el programa.
HTH,
estan
Re: ¿Cómo configurar Python para JMP 14?Pensé que sí, porque mi .py, que es solo una copia de Hola mundo, funciona con este jsl:
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<GET version=""></GET>
Y el registro:
//:*/
dt = current data table();
txt = runprogram(executable("C:\Users\username\AppData\Local\Programs\Python\Python37-32\python.exe"),
options({"C:\Users\username\PycharmProjects\FormationPython\tp1.py"}),
readfunction("text"));
//pythconn<<Get Version;
/*:
"Hello World
"
Re: ¿Cómo configurar Python para JMP 14?Pensé que la interfaz de Python no estaba disponible hasta JMP 14.
Re: ¿Cómo configurar Python para JMP 14?Hola Pablo,
Gracias por tu trabajo, lamentablemente solo tengo la versión 13.0 de JMP. Y trabajo con Python versión 3.7.1 sin Anaconda.
Tengo todas las bibliotecas necesarias (numpy, scipy, matplotlib, panda... ).
Estoy en Windows 10, hice tu truco de "nombre de variable" (que por cierto está bien explicado) pero con este fragmento de código estoy teniendo problemas...
Échale un vistazo en su lugar:
Names Default To Here( 1 );
Python Init(Use Python Version("3.7.1"));
/*Python Submit("\[
import sys
sys.path=['', 'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
*/
x1 = [1, 2, 3];
Python Send( x1 );
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();
Observación: Python Init no está en fuente azul.
La ventana de registro muestra:
Nombre sin resolver: Python Init en el acceso o evaluación de 'Python Init', Python Init( Use Python Version( "3.7.1") ) /*###*/
In the following script, error marked by /*###*/
Names Default To Here( 1 );
Python Init( Use Python Version( "3.7.1" ) ) /*###*/;
x1 = [1, 2, 3];
Python Send( x1 );
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();
Gracias por leer 
Robin
Re: ¿Cómo configurar Python para JMP 14?Por supuesto, después de publicar encuentro una manera mejor, pero implica establecer una variable de entorno.JMP 14 está buscando una variable de entorno.Es el sys.path que describí en la publicación anterior, sin embargo, debes configurarlo para que sea una lista JSL de rutas.En Windows 10, debe ir a propiedades del sistema, Configuración avanzada del sistema, Variables de entorno y crear una nueva Variable de entorno.
Variable Name: Python sys path
Variable Value: {"", "C:\\local\\anaconda3\\python36.zip", "C:\\local\\anaconda3\\DLLs",
"C:\\local\\anaconda3\\lib", "C:\\local\\anaconda3", "C:\\local\\anaconda3\\lib\\site-packages",
"C:\\local\\anaconda3\\lib\\site-packages\\win32",
"C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib",
"C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin"}
Lo que luego permite este script
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
x1 = [1, 2, 3];
Python Send( x1 );
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();
para dar lo esperado
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0

Re: ¿Cómo configurar Python para JMP 14?Primero quiero disculparme por los problemas que está teniendo con el soporte de Python de JMP.El desarrollador original de la función Python se retiró al final del ciclo de desarrollo de JMP 14. Estoy trabajando en el código para solucionar los problemas pendientes.
Hay problemas con la capacidad de JMP para localizar Python.Si JMP lo encuentra por sí solo, estará listo; por lo general, si solo tiene una versión de Python en su sistema, estará bien.Cuando falla, es difícil solucionar el problema en las versiones actuales de JMP. Además, existen diferencias entre Windows y Mac en cuanto a qué tan bien o qué tan mal es para encontrar Python. He descubierto un par de errores en el código que se supone le permite especificar dónde se encuentra su instancia de Python.
El uso de la ruta del sistema Python ( {"",...} ) dentro de Python Init() funciona en JMP para Mac v14.1 o posterior, pero no funciona en JMP 14.0, 14.1 para Windows.
Windows JMP no lo maneja bien si hay más de una versión de Python en el sistema. Debe especificar la versión de Python que se utilizará en Python Init (Use Python Version("3.6")); por ejemplo para seleccionar la versión 3.6.Incluso con esto especificado, es posible que aún reciba errores en el registro al localizar los módulos que JMP intenta cargar para proporcionar interoperabilidad.En Mac, JMP 14.0 tendrá problemas si hay más de una versión de Python3. Mac JMP 14.1 soluciona este problema utilizando la versión más alta de Python 3, en lugar de abandonar si hay más de una.
En mi Mac donde está instalado Python 3.6 en /Library/Frameworks/Python.framework, mi declaración Python Init() es:
Python Init( Ruta("/Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib"), Usar la versión de Python("3.6") );
La declaración Path() funciona en Mac, pero no en Windows...
En mi escritorio de Windows 10 instalé Anaconda con Python 3.6 en mi directorio C:\local\anaconda3.
El siguiente script se ejecuta, aunque elimina las advertencias de no encontrar los módulos. Para resolver el problema de carga del módulo, lo primero que hago después del inicio es importar el módulo sys y luego configurar sys.path en el valor de ruta que se devolvería si hace lo siguiente dentro del intérprete de Python, luego carga esos módulos dentro mi guión antes de continuar.
Localizando su sys.path desde el intérprete de Python.
C:\local\anaconda3>.\python.exe
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print (sys.path)
['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
>>>
Mi script modificado:
Names Default To Here( 1 );
Python Init(Use Python Version("3.6"));
Python Submit("\[
import sys
sys.path=['', 'C:\\local\\anaconda3\\python36.zip', 'C:\\local\\anaconda3\\DLLs', 'C:\\local\\anaconda3\\lib', 'C:\\local\\anaconda3', 'C:\\local\\anaconda3\\lib\\site-packages', 'C:\\local\\anaconda3\\lib\\site-packages\\win32', 'C:\\local\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\local\\anaconda3\\lib\\site-packages\\Pythonwin']
import numpy as _JMPnp
import scipy as _JMPsp
import pandas as _JMPpd
import sqlite3 as _JMPsq
]\");
x1 = [1, 2, 3];
Python Send( x1 );
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();
Con el siguiente resultado en el registro
/**********/
# Import the numpy module for array and matrix support
import numpy as _JMPnp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'numpy'
/**********/
# Import the scipy module for scientific computing support
import scipy as _JMPsp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'scipy'
/**********/
# Import the pandas module for Series/Data Frame support
import pandas as _JMPpd
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'pandas'
/**********/
# Import the matplotlib module for 2D plotting
import matplotlib as _JMPmpl
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Import the matplotlib.pyplot module for plots
import matplotlib.pyplot as _JMPpp
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'matplotlib'
/**********/
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
/**********/
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name '_JMPpp' is not defined
Unable to import the 'numpy' Python module
Unable to import the 'scipy' Python module
Unable to import the 'pandas' Python module
Unable to import the 'matplotlib' Python module
x1 = [1, 2, 3];
x2 = [1, 2, 3];
0
Probado con JMP 14.1 y desarrollo actual.
Nuevamente, en nombre de JMP Development, me disculpo por el estado actual del soporte de Python.Tenga paciencia con nosotros mientras continuamos arreglando y mejorando esta importante característica. Por favor reportar problemas encontrará y sugerencias de nuevas funciones.
Gracias.
Re: ¿Cómo configurar Python para JMP 14?Tengo JMP Pro 14.0 y Anaconda 1.8.7 instalados y puedo ejecutar ese código. el _JMPxx, se refiere a numpy: np, pandas: pd y matplotlib.pyplot: pp. Parece que los pandas pueden ser una dependencia.
Recibo una advertencia sobre "No se puede importar el módulo Python 'matplotlib.pyplot'" la primera vez que ejecuto las primeras 6 líneas de código, pero si las vuelvo a ejecutar, no aparece ningún error en el registro.