Esecuzione di script Python da JSLVorrei eseguire lo script Python dal mio codice JSL. Qual è il modo migliore per farlo? Grazie
Ri: Esecuzione di script Python da JSLAggiornamento: a partire da JMP 14.0 (e molto migliorato nella 15.0), il modo migliore per eseguire Python da JSL è ora utilizzare l'interfaccia JMP implementata nei comandi Python Init(), Python Submit(), ecc.
Maggiori informazioni qui:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
Per un wrapper che supporti l'esecuzione di ambienti virtuali Anaconda, controlla:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Ri: Esecuzione di script Python da JSLx = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
Quindi per fare il contrario, esegui JSL da uno script Python.Funziona su un Mac, JMP 13.2 (e questo è Python non jsl)
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
l'argomento open ha il percorso dell'applicazione, uno spazio e quindi il percorso/file da aprire.
Probabilmente è importante averlo
//!
sulla prima riga dello script in modo che venga eseguito automaticamente. E poi nell'ultima riga, includi questo
Quit();
Ciò chiuderà l'istanza di JMP avviata da os.sytem.
Ri: Esecuzione di script Python da JSLSto utilizzando il driver ODBC a 64 bit di Oracle per Oracle 11 per comunicare con un database Oracle v12. Non ho visto nessun comportamento come quello che hai menzionato. L'ho usato per JMP 11 e 12. Non siamo ancora passati completamente a JMP 13; v13.1.0 risolto un bug per cui V13.0 non poteva leggere un CLOB.
A proposito, non sono mai riuscito a far funzionare il driver Oracle ODBC di Microsoft.
Buona fortuna!
Ri: Esecuzione di script Python da JSLAttualmente sto utilizzando i driver ODBC e non sono affidabili. Non penso davvero che sia JMP, ma il passaggio da JMP 12 - 13 e Oracle 11-12 ha sicuramente sconvolto il carrello delle mele. So che devo chiudere e riaprire le connessioni al database circa ogni cinque query affinché le cose funzionino in modo affidabile.
Ri: Esecuzione di script Python da JSLPotrebbe essere più semplice e veloce leggere i dati direttamente in JMP utilizzando un driver ODBC. Qual è il tuo database SQL? Ho molta esperienza con Oracle e potrei aiutarti.
Ri: Esecuzione di script Python da JSLUtilizzo
txt = eseguiprogramma(...readfunction("testo"));
Se il programma Python produce qualsiasi stdout (istruzione print, ecc.), tornerà a JSL come risultato di runProgram. JSL non continuerà finché il programma Python non termina con readfunction("testo") . Potresti voler stampare qualcosa del genere
nomefile.dat,100
quindi JSL può sapere che ci sono 100 righe di dati in quel file. Oppure stampare un messaggio di errore e gestirlo se il database non è disponibile.
(JSL dispone anche di alcune funzionalità SQL che potrebbero essere più appropriate @Eric_Hill )
Ri: Esecuzione di script Python da JSLBrama,
Grazie per la pronta risposta. Quello che sto cercando di fare è chiamare il
programma python e sospendere l'esecuzione di JSL fino al programma python
termina. Il programma Python scrive il suo output in un file, cosa che farei
quindi apri e recupera tramite JSL. Fondamentalmente sto cercando di usare Python per
recuperare i dati da un database per utilizzarli con il mio codice JSL. La sequenza dovrebbe
Essere:
1. Esegui JSL e prepara la query SQL, questa viene quindi riunita
creare lo script Python.
2. Esegui il programma Python e metti in pausa JSL
3. Quando Python completa il JSL continua, aprendo il file
Python lo ha salvato e lo sta elaborando.
Ri: Esecuzione di script Python da JSLreadFunction dice a RunProgram come gestire l'output del tuo programma Python (i dati scritti su stdout). Se fornisci una funzione JSL effettiva, compilata da funzione funzione, come nel tuo esempio, allora JSL e Python funzionano in modo indipendente e ogni volta che JMP è inattivo, la funzione JSL può essere chiamata per recuperare ulteriore output da Python. Ciò potrebbe essere utile se il programma Python viene eseguito per sempre e produce un flusso infinito di output. L'altro esempio pubblicato qui utilizza readfunction("testo") , che è un modo semplice per recuperare tutto l'output del programma Python (che deve terminare, ovviamente). L'output ritorna come risultato della funzione runProgram.
Se fornisci una funzione da richiamare da runProgram, devi anche mantenere l'oggetto runprogram in una variabile JSL in modo che la connessione tra JMP e Python non venga distrutta troppo presto: ogg = eseguiProgramma(...)
IL Questo Il parametro in readFunction è lo stesso di ogg variabile sopra. Ti dà accesso ai metodi dell'oggetto runProgram, come <
modifica: e l'output della funzione di scrittura va al registro JMP; assicurati di cercare lì i risultati.
Ri: Esecuzione di script Python da JSLHo difficoltà con il comando "esegui programma". La riga seguente funziona correttamente da un prompt dei comandi:
c:\miaazienda\anaconda3\python.exe "c:\utenti\mioID\temp\pythonsqltest.py"
Sto cercando di eseguirlo eseguendo questo 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 ) ) )
);
Penso di non capire davvero il ruolo che "ReadFunction" gioca qui. Cosa mi manca?
Ri: Esecuzione di script Python da JSLEcco un esempio con cui stavo giocando
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy è un pacchetto Python per Twitter. Questo esempio prevede che il programma Python venga avviato, produca output e termini prima che JSL continui. Esistono altri modi per utilizzare RunProgram.
Ri: Esecuzione di script Python da JSLUsa il
Eseguire il programma()
funzione.
Per i dettagli, vai a:
Aiuto==>Scripting Indes==>EseguiProgramma