Bonjour,
J'ai un module complémentaire JMP dans lequel j'appelle Python (intégré à JMP, car j'utilise JMP 18.2.2) et j'ai besoin d'installer des packages Python (s'ils ne sont pas déjà installés).
J'ai donc deux questions :
Je n'ai pas de connexion Internet, je ne peux donc pas utiliser pip install ni jmp.utils pour installer les packages Python. Comment puis-je coder en dur les packages Python dans le module complémentaire de JMP et les installer ?
- Puis-je voir s'il est déjà installé et, si oui, éviter de le réinstaller ?
Actuellement, j'ai fait ce qui suit :
-
Ensuite, dans mon add-in JMP, au démarrage, j'exécute cette commande (pour installer les packages sans avoir besoin d'un accès 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'
])
" );
Savez-vous comment résoudre ce problème ? Je sais que le fichier sys.executable devrait renvoyer le chemin du fichier python.exe de JMP, mais pour une raison inconnue, il renvoie le chemin de jmp.exe. Où se trouve le fichier python.exe utilisé par JMP ?
Bonjour!
Oui, sys.executable renvoie le chemin de jmp.exe au lieu de l'exécutable Python, qui se trouve en réalité dans le même répertoire (jmp_python.exe). Cependant, son utilisation directe est difficile, car certaines variables d'environnement doivent être définies avant l'exécution de pip.
Vous pourriez autoriser JMP à générer le fichier jpip.bat. Ce fichier définit toutes les variables d'environnement nécessaires au bon fonctionnement du module pip de JMP-Python.
Python Create JPIP CMD();
Après avoir généré le fichier jpip.bat (cela ne doit être fait qu'une seule fois, évidemment), vous pouvez l'utiliser avec des arguments supplémentaires dans un script JSL comme ceci :
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"));
Notez les guillemets échappés, vos chemins peuvent contenir des espaces.
Alternativement, vous pouvez modifier directement le fichier jpip.file (avant-dernière ligne) :
"C:\path\to\the\jmp_python.exe" -m pip install --no-index --find-links="path\to\the\wheels" numpy pandas scipy
Ensuite, vous devez exécuter uniquement le fichier jpip.bat :
Run Program(Executable("cmd.exe"), Options({"/c", "\!"path/to/the/jpip.bat\!""}), Read Function("text"));
Merci beaucoup ça a marché !