Hola,
Tengo un complemento JMP donde llamo a Python (integrado en JMP, ya que estoy usando JMP 18.2.2) y necesito instalar paquetes de Python (si aún no están instalados).
Por lo tanto tengo dos preguntas:
No tengo conexión a internet, así que no puedo usar pip install ni jmp.utils para instalar los paquetes de Python. ¿Cómo puedo codificar los paquetes de Python en el complemento de JMP e instalarlos?
- ¿Puedo ver si ya está instalado y, de ser así, evitar reinstalarlo?
Actualmente he hecho lo siguiente:
-
Luego, en mi complemento JMP, al iniciar, ejecuto este comando (para instalar los paquetes sin necesidad de acceso a Internet):
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'
])
" );
¿Sabes cómo resolver el problema? Sé que sys.executable debería devolver la ruta de JMP python.exe, pero por alguna razón devuelve la ruta de jmp.exe. ¿Dónde está el archivo python.exe que usa JMP?
¡Hola!
Sí, sys.executable devuelve la ruta de jmp.exe en lugar del ejecutable de Python, que se encuentra en el mismo directorio (jmp_python.exe). Sin embargo, es difícil usarlo directamente, ya que se deben configurar algunas variables de entorno antes de ejecutar pip.
Podría permitir que JMP genere automáticamente el archivo jpip.bat. Este archivo configura todas las variables de entorno necesarias para que el módulo pip de JMP-Python funcione correctamente.
Python Create JPIP CMD();
Después de generar el archivo jpip.bat (debe hacerse solo una vez, obviamente), puedes usarlo con argumentos adicionales en un script JSL como este:
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"));
Tenga en cuenta las comillas escapadas, sus rutas podrían contener espacios.
Alternativamente, puede modificar directamente el archivo jpip.file (segunda última fila):
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
Luego solo necesitas ejecutar el archivo jpip.bat:
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));
¡Muchas gracias! ¡Funcionó!