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:
Configurazione del sistema:
- Versione JMP: 17
- Versione Python: 3.9.13 (64-bit) (provata anche la v3.13.1)
- Sistema operativo: Windows 10 (64 bit)
Passaggi intrapresi:
- Ho installato Python 3.9.13 e l'ho aggiunto al PATH.
- Pacchetti Python richiesti installati: numpy, pandas, matplotlib, scipy, PyQt5.
- Set the environment variable
JMP_PYTHON_MODULE_PATH to C:\Program Files\Python39\python39.dll. - Installazione Python verificata e installazione dei pacchetti tramite prompt dei comandi.
- Ho provato a eseguire un semplice script JSL per inizializzare 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();Problema: JMP crashes and closes immediately upon running Python Init.
Passaggi eseguiti per la risoluzione dei problemi:
- Verificato il percorso Python e la posizione del file DLL.
- Ho disinstallato le altre versioni di Python per evitare conflitti.
- Reinstallato JMP 17.
- Ho controllato i log JMP per individuare eventuali messaggi di errore (nessuno trovato).
Nonostante questi sforzi, il problema persiste. Qualcun altro ha riscontrato questo problema o ha suggerimenti su come risolverlo?
Grazie in anticipo per il vostro aiuto!
Hai la possibilità di aggiornare a JMP18.
l'aggiornamento è gratuito per tutti gli utenti.
Oltre a molti grandi miglioramenti, ora JMP + Python interagiscono alla perfezione : )
Vorrei che dipendesse da me aggiornarlo, ma l'azienda per cui lavoro riceve sempre i nuovi aggiornamenti software con almeno un anno di ritardo.
Contatterei direttamente l'assistenza JMP e invierei un ticket di assistenza.
supporto@jmp.com
Come menzionato da altri, JMP 18 semplifica notevolmente la tua vita per quanto riguarda Python. JMP installa un Python 3.11 incorporato privato che funziona immediatamente con JMP. Far funzionare Python con JMP 14-17 può essere impegnativo, ed è stato il motivo principale per cui JMP ora viene fornito con Python.
Per prima cosa rimuovi la variabile d'ambiente JMP_PYTHON_MODULE_PATH
Secondo, stai usando Python.org o Anaconda? Usa Python.org.
Terzo, JMP 17 è a 64 bit, quindi è necessario utilizzare Python a 64 bit.
Sono riuscito a far funzionare Anaconda, ma solo esaminando il codice sorgente JMP nel debugger per configurare correttamente Python Init.
Inoltre JMP 14-17 non è progettato per funzionare con ambienti virtuali ( venv).
Le funzioni Python Connect() e Python Init() accettano diversi parametri che possono risolvere il problema.
Il metodo più semplice da provare è:
Python Init ( Use Python Version("3.9") );
Hai già provato:
Python Init (
Path("C:\\Users\\_me_\\AppData\\Local\\Programs\\Python\\Python39\\python39.dll") <BR />);
Infine, il metodo 'brute force' consiste nello specificare sia il percorso della dll, sia il sys.path completo di Python come elenco JSL. Avvia Python dalla riga di comando ed esegui quanto segue.
import sys
print ( sys.path )
Sulla mia macchina viene visualizzato quanto segue:
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']
>>>
Ora puoi prendere l'elenco Python [ ... ] e creare un elenco JSL da quello per passare a Python Init() come mostrato di seguito. Qui i due differiscono poiché lo script di seguito è incollato da uno script che ho eseguito qualche tempo fa. Ho eseguito il Python di cui sopra oggi. In caso di dubbi, usa tutto ciò che Python stesso restituisce per il suo 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)
]\");
Oltre a ciò... Aggiorna a JMP 18.
Grazie, rimuovendo la variabile env e passando l'elenco sys.path a Python Init ha funzionato.