Ciao,
Ho un componente aggiuntivo JMP in cui chiamo Python (integrato in JMP, dato che utilizzo JMP 18.2.2) e devo installare i pacchetti Python (se non sono già installati).
Ho quindi due domande:
- Non ho una connessione internet, quindi non posso usare pip install o jmp.utils per installare i pacchetti Python. Come posso codificare i pacchetti Python nel componente aggiuntivo in JMP e installarli?
- Posso vedere se è già installato e, in tal caso, evitare di reinstallarlo?
Attualmente ho svolto le seguenti attività:
strPathPythonLibs = "C:\Users\Utilisateur\Documents\Sophie\JMP Addin\Python libs";
Python send(strPathPythonLibs);
Python submit( "
import sys, subprocess
subprocess.check_call([
sys.executable, '-m', 'pip', 'install',
'--no-index',
f'--find-links={strPathPythonLibs}',
'numpy', 'pandas', 'scipy'
])
" );
Sai come risolvere il problema? So che sys.executable dovrebbe restituire il percorso di JMP python.exe, ma per qualche motivo restituisce il percorso di jmp.exe. Dov'è il python.exe utilizzato da JMP?
Ciao!
Sì, sys.executable restituisce il percorso di jmp.exe invece dell'eseguibile Python, che in realtà si trova nella stessa directory (jmp_python.exe). Tuttavia, è difficile utilizzarlo direttamente, poiché alcune variabili d'ambiente devono essere impostate prima di eseguire pip.
Quello che potresti fare è consentire a JMP di generare il file jpip.bat per te. Questo file imposta tutte le variabili d'ambiente necessarie al corretto funzionamento del modulo pip di JMP-Python.
Python Create JPIP CMD();
Dopo aver generato il file jpip.bat (operazione che ovviamente deve essere eseguita una sola volta), è possibile utilizzarlo con argomenti aggiuntivi in uno script JSL come questo:
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!"", "install", "--no-index", "--find-links=\!"path/to/the/wheels\!"", "numpy", "pandas", "scipy"}), Read Function("text"));
Nota le virgolette di escape: i tuoi percorsi potrebbero contenere spazi.
In alternativa, puoi modificare direttamente il file jpip.file (penultima riga):
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
Quindi è necessario eseguire solo il file jpip.bat:
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));
Grazie mille, ha funzionato!