Existe-t-il une bonne pratique pour installer et utiliser un module Python local dans l’environnement JSL ?
J'ai lu la documentation sur Installer des packages Python à l'aide de JSL , et cela semble adapté aux bibliothèques standard. Existe-t-il un emplacement par défaut où JMP recherche des modules personnalisés ?
Existe-t-il un moyen de gérer les mises à jour des modules personnalisés à l'aide de JSL ?
Existe-t-il des différences dans le travail avec des modules, des packages ou des bibliothèques personnalisés ?
Comment les gérez-vous lorsque vous n'utilisez pas JMP ? Vous pouvez probablement utiliser quelque chose de similaire lorsque vous utilisez JMP.
JMP le « trouvera » simplement s'il se trouve dans le même répertoire que le script de lancement .jsl ou .py. Il y a un problème dans JMP 18.0 si le script de lancement est .jsl, il ne trouve pas l'importation .py.
Cela devrait fonctionner correctement à partir des scripts .jsl ou .py dans 18.1+
L'autre méthode consiste à créer un fichier pyproject.toml, à placer le script dans un répertoire du même nom que le fichier et un fichier pyproject.toml approprié. Cela en fait un package installable que jpip peut ensuite installer dans l'emplacement site-packages/ de JMP. Consultez la documentation de Python.org ou de nombreux autres tutoriels sur la création de packages Python installables. Par exemple : https://til.simonwillison.net/python/pyproject
Le code ci-dessous est rapide et sale et ne suit probablement pas les meilleures pratiques de Python. Je pense qu'il y a généralement un fichier __init__.py et __main__.py ou main.py au lieu du fichier correspondant au répertoire du package... Mais le fichier toml vous permet de spécifier de nombreuses choses, y compris les dépendances, comme indiqué ci-dessous.
dt2pandas/
dt2pandas.py
pyproject.toml
pyproject.toml
[projet]
nom = "dt2pandas"
description = "Exemple de conversion de jmp.DataTable en pandas.DataFrame"
auteurs = [
{ nom = "Paul R. Nelson", courriel = "paul.nelson@jmp.com" }
]
version = "0.1"
dépendances = [ "pandas" ]
À quel moment vous pouvez faire un
jmputils.jpip('install', '-e _mon_chemin_vers/ dt2pandas')