Ejecutando Python Script desde JSLMe gustaría ejecutar un script Python desde mi código JSL. ¿Cuál es la mejor manera de hacer eso? Gracias
Re: Ejecutar script Python desde JSLActualización: desde JMP 14.0 (y muy mejorado en 15.0), la mejor manera de ejecutar Python desde JSL ahora es usar la interfaz JMP implementada en los comandos Python Init(), Python Submit(), etc.
Más información aquí:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
Para obtener un contenedor que admita la ejecución de entornos virtuales Anaconda, verifique:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Re: Ejecutar script Python desde JSLx = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
Luego, para hacer lo contrario, ejecute JSL desde un script en Python.Esto funciona en una Mac, JMP 13.2 (y esto es Python, no jsl)
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
el argumento abierto tiene la ruta de la aplicación, un espacio y luego la ruta/archivo a abrir.
Probablemente sea importante tener
//!
en la primera fila del script para que se ejecute automáticamente. Y luego, en la última línea, incluye esto.
Quit();
Esto cerrará la instancia de JMP que inició os.sytem.
Re: Ejecutar script Python desde JSLEstoy usando el controlador ODBC de 64 bits de Oracle para Oracle 11 para comunicarme con una base de datos Oracle v12. No he visto ningún comportamiento como el que mencionaste. He usado esto para JMP 11 y 12. Aún no hemos realizado la transición completa a JMP 13; v13.1.0 solucionó un error por el cual V13.0 no podía leer un CLOB.
Por cierto, nunca pude hacer funcionar el controlador ODBC de Oracle de Microsoft.
¡Buena suerte!
Re: Ejecutar script Python desde JSLEstoy usando los controladores ODBC ahora y no son confiables. Realmente no creo que sea JMP, pero cambiar de JMP 12 - 13 y Oracle 11-12 definitivamente trastornó el carro de manzanas. Sé que tengo que cerrar y volver a abrir las conexiones de la base de datos cada cinco consultas para que todo funcione de manera confiable.
Re: Ejecutar script Python desde JSLPodría ser más sencillo y rápido leer datos directamente en JMP utilizando un controlador ODBC. ¿Cuál es su base de datos SQL? Tengo mucha experiencia con Oracle y podría ayudar con eso.
Re: Ejecutar script Python desde JSLUsar
txt = ejecutar programa (... función de lectura ("texto"));
Si el programa Python produce alguna salida estándar (declaración impresa, etc.), volverá a JSL como resultado de runProgram. JSL no continuará hasta que el programa Python termine con función de lectura ("texto") . Es posible que desee imprimir algo como
nombre de archivo.dat,100
para que JSL pueda saber que hay 100 líneas de datos en ese archivo. O imprima un mensaje de error y manéjelo si la base de datos no está disponible.
(JSL también tiene algunas capacidades SQL que podrían ser más apropiadas @Eric_Hill )
Re: Ejecutar script Python desde JSLCraig,
Gracias por la rápida respuesta. Lo que estoy tratando de hacer es llamar al
programa Python y pausar la ejecución del JSL hasta que el programa Python
termina. El programa Python escribe su salida en un archivo que yo
luego ábralo y recupérelo a través de JSL. Básicamente estoy tratando de usar Python para
recuperar datos de una base de datos para utilizarlos en mi código JSL. La secuencia debe
ser:
1. Ejecute JSL y prepare la consulta SQL, esto luego se reúne para
crear el script de Python.
2. Ejecute el programa Python y pausar el JSL
3. Cuando Python completa el JSL continúa, abriendo el archivo
Python lo guardó y lo procesó.
Re: Ejecutar script Python desde JSLreadFunction le dice a RunProgram cómo manejar la salida de su programa Python (los datos escritos en la salida estándar). Si proporciona una función JSL real, compilada por el función función, como en su ejemplo, entonces JSL y Python se ejecutan de forma independiente y siempre que JMP esté inactivo, se puede llamar a su función JSL para recuperar más resultados de Python. Esto podría resultar útil si el programa Python se ejecuta para siempre y genera un flujo infinito de resultados. El otro ejemplo publicado aquí utiliza función de lectura ("texto") , que es una forma sencilla de recuperar todos los resultados del programa Python (que debe finalizar, por supuesto). La salida regresa como resultado de la función runProgram.
Si proporciona una función para que runProgram la llame, también debe mantener el objeto runprogram en una variable JSL para que la conexión entre JMP y Python no se destruya demasiado pronto: objeto = ejecutarPrograma(...)
El este El parámetro en readFunction es el mismo que el objeto variable anterior. Le da acceso a los métodos del objeto runProgram, como <
editar: Y la salida de la función de escritura va al registro JMP; asegúrese de buscar allí sus resultados.
Re: Ejecutar script Python desde JSLTengo problemas con el comando "ejecutar programa". La siguiente línea funciona bien desde un símbolo del sistema:
c:\miempresa\anaconda3\python.exe "c:\usuarios\myuserid\temp\pythonsqltest.py"
Estoy intentando ejecutarlo ejecutando este script:
Names Default To Here( 1 );
RP = RunProgram(
Executable( "c:\mycompany\anaconda3\python.EXE" ),
Options( {"c:\users\myuserid\temp\pythonsqltest.py"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
Creo que realmente no entiendo el papel que juega "ReadFunction" aquí. ¿Qué me estoy perdiendo?
Re: Ejecutar script Python desde JSLAquí hay un ejemplo con el que estaba jugando.
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy es un paquete de Python para Twitter. Este ejemplo espera que el programa Python se inicie, produzca resultados y finalice antes de que JSL continúe. Hay otras formas de utilizar RunProgram.
Re: Ejecutar script Python desde JSLUtilizar el
Ejecute el programa()
función.
Para más detalles, vaya a:
Ayuda==>Scripting Indes==>Ejecutar programa