Fonctionnalités JMP 14 Python - fonctionnelles ? Je suis confusJ'essaie d'utiliser les nouvelles capacités de JMP 14 pour exécuter python et cela ne fonctionne pas.Fondamentalement, je ne trouve pas mon installation python, je pense que dans certaines circonstances, cela se bloque simplement.
J'ai vu un autre débat disant qu'il y avait des problèmes avec cela dans 14.1 et suggérant une solution de contournement pour définir des variables d'environnement et utiliser Utiliser la version Python ("3.6") comme argument à Init Python() (les deux que j'ai essayé sans succès).
Ensuite, j'ai vu dans les notes de version de 14.2 plus à ce sujet, y compris un nom différent pour la variable d'environnement pertinente...
https://www.jmp.com/support/help/14-2/how-jmp-finds-python-on-windows.shtml
Donc, je suis allé mettre à niveau à partir de 14.1 et j'ai vu qu'il y avait maintenant 14.3 et je l'ai obtenu. lorsque j'essaie les instructions de variable d'environnement de la publication 14.2, je reçois un message disant que c'est obsolète et maintenant ce devrait être JMP_PYTHON_MODULE_PATH.Alors j'ai essayé ça, je pense avec un chemin valide vers le bon fichier, en utilisant le même format que celui de la publication 14.2, mais ne fonctionne toujours pas.Il m'est venu à l'esprit d'essayer cela dans ma version d'adoption précoce de JMP15 et j'ai obtenu les mêmes résultats, même message indiquant que la variable d'environnement devrait s'appeler JMP_PYTHON_MODULE_PATH.
Dans tous les cas (14.1, 14.3, 15 early adopter, diverses versions de variables d'environnement) si je n'ai pas d'argument dans Python Init(), JMP plante tout de suite sur cette ligne.Si j'ai le UsePythonVersion("3.6") là-dedans, il revient avec une erreur indiquant qu'il ne peut pas du tout trouver Python.
Une installation de Python est introuvable sur ce système. La prise en charge de JMP Python nécessite Python version 3.0 ou ultérieure. dans l'accès ou l'évaluation de 'Python Init' , Python Init/*###*/(Use Python Version( "3.6" ))
Est-ce que quelqu'un l'utilise avec succès?Si oui, mettez-vous quelque chose dans Python Init() ?
ou si vous avez utilisé la définition d'une variable d'environnement, comment s'appelle-t-elle et à quoi ressemble-t-elle ?D'autres conseils de dépannage ?
Voici à quoi ressemble ma dernière tentative de variable d'environnement... n'est-ce pas le bon format ? (le message précédent ressemblait à une variable d'environnement avec des accolades et des guillemets comme JMP voulait voir un format de liste JSL, mais cela ressemble à ce que le message 4.2 dit de faire et un autre format ne fonctionnait pas pour moi non plus ...Un fichier python36.dll vraiment fait semble être à cet endroit...
Je ne sais pas si j'ai un problème anormal spécifique à mon système pour lequel j'ai besoin d'un support technique ou si je n'obtiens tout simplement pas la dernière version de la façon dont cela est censé fonctionner.
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusL'utilisation des variables d'environnement n'a jamais été la voie privilégiée. Les paramètres de script JSL pour Python Init() ou Python Connect() étaient toujours "supposés" être les valeurs définitives. Tous les paramètres sont facultatifs, mais en spécifiant le chemin d'accès à python3x.dll et en dernier recours, en ajoutant sys.path, vous devez spécifier entièrement Python. L'intégration Python a considérablement amélioré la détection de Python depuis JMP 14. À ce stade, l'utilisation des variables d'environnement est probablement contre-productive et ne doit pas être utilisée (à moins que vous n'ayez le temps de jouer avec les boutons et que tout le reste échoue, c'est un chemin de code alternatif). Dans JMP 16.1 et versions ultérieures, les paramètres de script JSL "devraient" remplacer tout le reste...
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusJe sais que la réponse est un peu tardive, mais ce sujet doit être modifié et mis à jour pour les nouvelles versions de JMP et Anaconda.Veuillez noter que j'ai réussi à intégrer python 3.8 avec JMP 16 le 24/08/2021.
En contradiction directe avec la "Solution" publiée dans ce fil, NE modifiez PAS DU TOUT les variables environnementales.
FAIRE.
PAS.
Cette "Solution" m'a fait échouer dans mon intégration et mon développement pendant plusieurs semaines.Après avoir installé JMP ou mis à jour JMP, vous devez installer une nouvelle version d'Anaconda (Anaconda Navigator peut être utilisé) et vous assurer que votre environnement de base (racine) dans Anaconda est au moins 3.8.3.J'ai aussi testé avec succès la 3.8.8.
Vous pouvez vérifier votre chemin d'accès et votre installation en procédant comme suit :
- Accédez à C:\Program Files\SAS\JMP\\ (si vous ne le voyez pas ici, vérifiez : C:\Program Files (x86)\SAS\JMP\\)
- Double-cliquez sur InstallChecker.exe (il pourrait simplement dire Install Checker)
- Une fois le rapport affiché, choisissez "Ouvrir dans le navigateur"
Vous devriez alors voir un fichier XML et à la fin vous devriez voir ceci :
-
"/>
"/>
"/>
"/>
"/>
Dans mon cas, l'intégration a réussi après avoir modifié les variables environnementales en :
"/>
"/>
J'espère que cela vous aidera et je suggérerais fortement que la solution sur ce fil soit supprimée car cela ne fonctionne tout simplement pas.
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusJMP 15.0 souffre toujours du même problème. J'ai installé l'Anaconda lié sans l'option PATH et cela a fonctionné.
Notez que ce paquet est assez ancien, vous devrez donc conda mettre à jour vos paquets en faisant attention de ne pas aller mettre à jour Python lui-même 3.6.5 (3.6.9 n'a pas fonctionné pour moi).
J'espère que c'est corrigé dans les prochaines versions.
@FN a écrit:
Je peux confirmer qu'avec Windows 10 et JMP 14.2, cela fonctionne immédiatement si :
Anaconda Python 3.6* 64 bits est installé > https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
et l'option PATH est activée (aucun droit d'administrateur requis)

Mon point concernait davantage la capacité de déployer des compléments avec une version Python portable afin que les utilisateurs n'aient pas à se soucier de l'installation, des environnements et de la gestion des versions d'Anaconda.
Merci pour l'aide. Dans l'attente de voir une excellente intégration Python dans les mises à jour suivantes.
(*) Avec la version actuelle d'Anaconda, JMP plante avec cette config.
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusEn ce qui concerne le déploiement, je pense que tout ira bien dès que Python n'interférera pas avec les installations d'autres utilisateurs.
Par exemple, j'essaie d'appeler Python à partir de JMP 15 EA8 qui se trouve dans un dossier spécifique.
Ce dossier contient tous les fichiers d'installation d'Anaconda/miniconda, que j'ai copiés dans un dossier avant de le désinstaller. Le code fonctionnait lors de son installation. Maintenant, il semble que JMP n'utilise pas le chemin que je spécifie.
Set Environment Variable( "JMP_PYTHON_MODULE_PATH",
"\["", "C:/Users/xxx/JMP_scripting/python/miniconda3/python36.zip",
"C:/Users/xxx/JMP_scripting/python/miniconda3/DLLs",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/win32/lib",
"C:/Users/xxx/JMP_scripting/python/miniconda3/lib/site-packages/Pythonwin"]\"
);
Python Init (Path("C:\Users\xxx\JMP_scripting\python\miniconda3"),
Init Trace("TRUE"),
Debug Print Statements ("TRUE"),
Debug Print Output("TRUE") );
Python Submit( "\[basket = ["apple", "orange", "pear"]
print(basket)]\" );
Python Term();
Erreur dans JMP 15 EA8

Erreur dans JMP Pro 14.2 :
Une installation de Python est introuvable sur ce système. La prise en charge de JMP Python nécessite Python version 3.0 ou ultérieure. dans l'accès ou l'évaluation de 'Python Init' , Python Init/*###*/(Path(
"C:\Users\xxx\JMP_scripting\python\miniconda3"
))
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusBon! C'est un excellent cas d'utilisation.
Lorsque vous recherchez le flux de travail JMP + Python idéal, il convient de noter que JMP (Pro) peut générer du code de notation Python pour les modèles JMP. Cela prend en charge l'intégration dans l'autre sens : pousser les fonctionnalités JMP dans le monde Python.
Par exemple, supposons que vous vouliez appliquer un modèle JMP à une grande table de données dans Oracle, vous pouvez convertir le modèle en Python et le noter dans la base de données à l'aide d'UDF (le support semble cependant être expérimental) :
https://oracle.github.io/oracle-db-mle/python/
Vous pouvez également partager votre modèle JMP avec votre collègue Python afin qu'elle puisse l'exécuter dans un bloc-notes Jupyter, etc.
De plus, JMP 15.0 facilitera l'affichage d'images externes sous forme de vignettes dans vos info-bulles de visualisation de données. Cela réduirait/éliminerait le besoin de les importer directement dans vos tables JMP, en les gardant plus petits. Il y a bien sûr un coût de performance, mais cela pourrait être un compromis valable. Gardez un œil sur cela.
Merci d'avoir partagé! Tenez-nous au courant de votre parcours !
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusÇa a l'air super - merci !Je n'ai pas le temps de le tester pendant au moins quelques semaines (et j'ai complètement refait mon installation Python sans environnement virtuel, il faudra donc un peu de temps pour essayer cela) mais je serai ravi de le tester bientôt.
La chose qui a vraiment déclenché mon utilisation de Python est la classification des images avec tensorflow et keras.J'exécute un script JMP qui interroge les images pertinentes et appelle python pour exécuter mon modèle, puis transmet les résultats à Oracle.Toute cette tâche est quelque chose que je finirai probablement par faire en Python mais que je fais en JSL parce que je suis beaucoup plus compétent dans ce domaine jusqu'à présent - j'apprends juste en Python - et j'ai déjà tout un schéma pour exécuter des travaux automatisés JSL , ont des fonctions conçues pour pousser des tables vers notre Oracle, etc.
Cependant, alors que je pensais que l'ensemble du projet ne serait pas intrinsèquement lié à JMP, j'ai en fait découvert qu'il était vraiment utile d'avoir des images dans une table JMP à côté d'autres données avec lesquelles elles peuvent être interagies de toutes les manières JMP habituelles - trier, sélectionner en fonction d'autres colonnes de données, etc. Cela m'a incité à faire un certain nombre d'autres addins liés à l'image.Reste à voir s'il y a finalement un réel besoin dans mon projet d'appeler le Python lors d'une session JMP interactive en direct ou s'ils peuvent être séparés (un outil qui examine les résultats du modèle tf de manière interactive en interrogeant simplement les résultats d'Oracle, sans appeler directement Python pour exécuter des modèles en direct ?) mais je les utilise actuellement ensemble.
Quoi qu'il en soit, c'est la chose non-in-JMP que j'utilise Python pour le moment. J'essaie d'en savoir plus sur Python et j'ai des collègues qui en sont experts et je me sens susceptible de trouver plus de choses où je pourrais appeler Python pour joindre ses capacités à JMP.
Merci!
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusSalut @hardner ,
Bon à savoir que vous utilisez davantage Python avec JMP. Si vous pouvez partager ce que vous avez fait, nous serions ravis de le savoir !
Concernant la prise en charge des environnements virtuels, je vous entends. Cela fait une grande différence en termes d'organisation de vos dépendances ET d'aide à vos collègues pour reproduire votre environnement afin d'exécuter vos compléments.
C'est pourquoi j'ai créé une petite bibliothèque qui aide à résoudre ce problème. Vérifiez s'il vous plaît:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Beaucoup d'exemples, testés en 14.3 et 15.1. Mais, au moins pour l'instant, Windows uniquement et spécifique à Anaconda.
Dites-moi si cela marche pour vous!
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusBonjour!
Je reviens juste dans ce fil en tant qu'OP pour dire ...
- J'utilise davantage Python depuis mon message d'origine et ce que j'ai dit fonctionnait pour moi a continué à fonctionner.:)
- J'apprécie les efforts pour supporter Python, d'autant plus maintenant que j'ai trouvé des choses spécifiques pour lesquelles l'utiliser. Merci!
- Comme FN, je trouve problématique le partage d'addins qui appellent Python. Je partage beaucoup d'addins.Je l'utilise maintenant juste pour moi-même et pour les travaux que j'exécute qui partagent ensuite les résultats avec d'autres, mais pas dans des scripts à exécuter par d'autres.Je devrais donner des instructions compliquées sur l'installation de Python et des packages et m'inquiéter des versions spécifiques qui fonctionnent ensemble (le même problème se produit avec R que j'utilise mais pas dans les scripts partagés).Mais si une version particulière était encapsulée dans JMP, cela limiterait ce que nous pouvons en faire.Je pense toujours que la prise en charge d'environnements virtuels pourrait aider, alors je pourrais instruire et aider les utilisateurs à configurer une installation selon mes spécifications pour un outil particulier qu'ils souhaitent utiliser et ne pas interférer avec d'autres activités Python sur leur machine.Mais pas vraiment sûr de ce qui serait le mieux et pas si désireux de dépanner les installations Python des utilisateurs.Donc, simplement convenir que ce n'est pas idéal et noter que j'ai un certain intérêt à utiliser davantage cette capacité.
Merci!
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusJe peux confirmer qu'avec Windows 10 et JMP 14.2, cela fonctionne immédiatement si :
Anaconda Python 3.6* 64 bits est installé > https://repo.continuum.io/archive/Anaconda3-5.2.0-Windows-x86_64.exe ;
et l'option PATH est activée (aucun droit d'administrateur requis)

Mon point concernait davantage la capacité de déployer des compléments avec une version Python portable afin que les utilisateurs n'aient pas à se soucier de l'installation, des environnements et de la gestion des versions d'Anaconda.
Merci pour l'aide. Dans l'attente de voir une excellente intégration Python dans les mises à jour suivantes.
(*) Avec la version actuelle d'Anaconda, JMP plante avec cette config.
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusJe ne suis pas sûr de comprendre votre question. L'installation de Python pour tous les utilisateurs nécessite en effet un accès administrateur, mais l'utilisation du Python installé ne nécessite pas d'accès administrateur. Un complément JMP appelé Python ne nécessiterait pas d'accès administrateur pour s'installer ou s'exécuter. Oui, des packages Python supplémentaires installés pour tous les utilisateurs nécessitent un accès administrateur. Vous devriez être en mesure d'installer des packages locaux de site par utilisateur qui ne nécessiteraient pas l'installation d'un administrateur. C'est quelque chose que je voulais tester, mais j'ai eu la chance d'essayer. Il se peut que vous deviez mettre à jour le sys.path pour ajouter l'emplacement des packages locaux du site.
En ce qui concerne la documentation JMP 15, je sais qu'une partie de cette discussion a été intégrée. Malheureusement, tout n'est pas entré dans les documents avant la date limite. Nous travaillerons à intégrer le reste via les versions de maintenance.
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusL'installation pour tous les utilisateurs nécessite également des droits d'administrateur, ce qui n'est pas pratique lors de la distribution d'un complément qui appelle Python.
La documentation du JMP 15 inclura-t-elle ce qui a été discuté ici ?
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusNous avons pu répliquer sur une machine de développement, la sortie brutale de JMP lors d'une tentative de chargement de Python 3.7.Il s'avère que nous (JMP) ne sommes pas les seuls à avoir des problèmes avec Python 3.7, et Python 3.8 en particulier dans un cas embarqué.L'erreur que nous avons reçue de Python est :
Erreur Python fatale : impossible de charger le codec du système de fichiers
Exception non gérée à 0x00007FFE84F9B64E (ucrtbase.dll) dans Jmp.exe : sortie fatale du programme demandée.
Le solution à l'heure actuelle, consiste soit à utiliser Python 3.6.5 ou une version plus récente 3.6.x, soit à installer Python 3.7.x sous Windows en tant qu'installation pour tous les utilisateurs, pas seulement pour l'utilisateur local ET vous DEVEZ choisir l'option pour mettre le Python dans votre PATH.Cela contredit directement la boîte de dialogue d'installation d'Anaconda3, avertissant de ne pas le mettre dans le chemin.
Ma machine de développement fonctionne bien avec 3.7.1 installé en tant qu'installation à l'échelle du système et est le Python par défaut sur le chemin.La machine de mon collègue où nous avons pu répliquer l'abandon soudain de JMP, nous avons installé Python 3.7.1 en utilisant les options d'installation par défaut qui ont fait une installation locale non sur le chemin.Nous avons pu empêcher JMP de se fermer en définissant la variable d'environnement PYTHONHOME = 'le répertoire anaconda3' Mais même ici, nous n'avons pas pu le faire charger numpy, scipi, pandas ou sqlite3, même à partir d'une invite de console. Où sur ma machine tout fonctionne comme prévu.
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusplus sur UsePythonVersion("3.6"), juste au cas où c'est utile....
cette ligne ne fonctionne pas lors de la première ouverture de JMP...
Python Init(Utiliser la version Python( "3.6" ), InitTrace( "True" ));
Voici ce que le journal montre à partir de InitTrace()...
Traitement de l'opérateur OpPythonInit
Démarrage de l'initialisation de l'interface JMP vers Python
Requête HKEY_CURRENT_USER
Lecture hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Trouvé hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
# de sous-clés = 1
Récupération de la sous-clé #=0
sous-clé=3.6 longueur=3
Sous-clé d'ouverture=3.6
Clé d'ouverture=3.6 sous-clé=InstallPath
Valeur de requête key=3.6 subkey=InstallPath
Query value key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
Clé d'ouverture=3.6 sous-clé=PythonPath
Valeur de requête key=3.6 subkey=PythonPath
Construire le chemin vers la version=3.6 de la DLL Python
Une installation de Python est introuvable sur ce système. La prise en charge de JMP Python nécessite Python version 3.0 ou ultérieure. dans l'accès ou l'évaluation de 'Python Init' , Python Init/*###*/(Use Python Version( "3.6" ), InitTrace( "True" ))
Cela se produit à plusieurs reprises si j'exécute la ligne encore et encore, mais si je fais cette version sans UsePythonVersion...
Python Init(InitTrace( "True" ));
Non seulement cela fonctionne, mais après cela, la version originale avec l'argument UsePythonVersion("3.6") commence également à fonctionner, pendant que cette session JMP est ouverte.Voici ce que le journal affiche à partir de cette trace init dans ce cas.le chemin montrant qu'il y a le même aspect et correct pour moi dans les deux cas ....
Requête HKEY_CURRENT_USER
Lecture hKey=0XFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
Trouvé hKey=0xFFFFFFFF80000001 kname=SOFTWARE\Python\PythonCore bits=64
# de sous-clés = 1
Récupération de la sous-clé #=0
sous-clé=3.6 longueur=3
Sous-clé d'ouverture=3.6
Clé d'ouverture=3.6 sous-clé=InstallPath
Valeur de requête key=3.6 subkey=InstallPath
Query value key=3.6 subkey=InstallPath value=C:\Users\12470\AppData\Local\Continuum\anaconda3
Clé d'ouverture=3.6 sous-clé=PythonPath
Valeur de requête key=3.6 subkey=PythonPath
Construire le chemin vers la version=3.6 de la DLL Python
Chemin DLL Python=C:\Users\12470\AppData\Local\Continuum\anaconda3\python36.dll
sys.path entry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\Lib
sys.path entry.jstr:C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs
AVANT:
/***********/
impression(_JMPsys.path)
/***********/
['C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3 \\Lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs', 'C:\\Program Files\\SAS\\JMP\\14', ' C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site- packages', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Babel-2.5.0-py3.6.egg', 'C: \\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\12470\\AppData\\Local\\Continuum\ \anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Pythonwin ']
APRÈS:
/***********/
impression(_JMPsys.path)
/***********/
['', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\python36.zip', 'C:\\Users\\12470\\AppData\\Local\\Continuum \\anaconda3\\Lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\DLLs', 'C:\\Users\\12470\\AppData\\Local\ \Continuum\\anaconda3', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages', 'C:\\Users\\12470\\AppData \\Local\\Continuum\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site- packages\\win32\\lib', 'C:\\Users\\12470\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\Pythonwin']
Re : Les capacités de JMP 14 Python fonctionnent ? Je suis confusFonctionnement!
Voici ce qui a fonctionné pour moi :
J'ai réinstallé Anaconda en utilisant un archivé destiné à Python 3.6 (pour éviter d'utiliser un environnement virtuel pour 3.6).Voici où il s'est installé, comme précédemment, juste sans 2 couches supplémentaires pour l'environnement virtuel sous le dossier anaconda3):
C:\Users\12470\AppData\Local\Continuum\anaconda3\python36.dll
Définissez la variable d'environnement JMP_PYTHON_MODULE_PATH sur le chemin ci-dessus pour python36.dll
N'a pas utilisé l'argument UsePythonVersion("3.6") dans python init(), qui donne l'erreur "l'installation est introuvable".
Rien de ce que j'essaie après la réinstallation n'est, jusqu'à présent, à l'origine d'un plantage.Certes, je n'ai pas fait grand-chose, mais il semble que c'était quelque chose à propos de l'environnement virtuel qui provoquait le plantage (?).Les tests limités que j'ai effectués jusqu'à présent fonctionnent à la fois dans 14.3 et 15EA.
Merci!
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confus@Paul_Nelson & @Jeff_Perkinson ,
JMP a été mis à jour vers 14.3 et peut confirmer que le plantage continue. Faites-moi savoir s'il y a d'autres informations dont vous avez besoin.
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusLa toute première chose à faire est de mettre à jour vers une version plus récente de JMP 14. La version 14.0.0 d'origine fonctionnait correctement si elle pouvait détecter automatiquement la bonne installation de Python. Mais, s'il ne pouvait pas localiser correctement Python, aucune des autres méthodes ne fonctionnait bien du tout. Les travaux des mises à jour successives 14.1, 14.2,… ont amélioré le fonctionnement des autres alternatives, la vérification des variables d'environnement, l'utilisation des variables Python Init(). Il se peut que cela ne fonctionne toujours pas dans votre environnement spécifique, mais c'est le premier point de départ.
Vous devez continuer à travailler avec le support technique de JMP. En passant par le support technique, tous les clients JMP bénéficient de ce que nous travaillons sur ce problème. Pour le moment, il faudra creuser davantage dans le code, une instrumentation supplémentaire du code et une mise à l'épreuve des balles supplémentaire du code, cela peut même prendre l'écriture d'un programme de test ou de diagnostic.
Merci pour votre patience.
Paul
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusPour ce que ça vaut, les miens sont définitivement tous les deux en 64 bits et je reçois aussi le crash.La seule fois où le mien ne plante pas sur Python Init(), c'est avec l'argument Use Python Version() lorsque je reçois le message "impossible de trouver".Re : Capacités JMP 14 Python - fonctionnent ? Je suis confus@hardner et @Paul_Nelson ,
Paul, je suis d'accord avec @hardner 's observations. Est-il acceptable de vous demander de faire un webex avec nous peut-être demain ou peut-être la semaine prochaine, ce qui fonctionne pour vous, où vous pouvez regarder nos installations et nous dire pourquoi cela ne fonctionne pas ? Vous pourrez alors probablement publier un article de Blog renouvelé sur la communauté basé sur les enseignements que nous retirons de la réunion ? Est-ce quelque chose que vous pourriez faire ?
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusPour ce que ça vaut, les miens sont définitivement tous les deux en 64 bits et je reçois aussi le crash.La seule fois où le mien ne plante pas sur Python Init(), c'est avec l'argument Use Python Version() lorsque je reçois le message "impossible de trouver".
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusJe mettrais également à jour la dernière version de JMP 14. Des travaux supplémentaires ont été effectués dans chaque version de JMP 14.x pour améliorer la recherche de Python et son chargement correct.Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusJ'espérais une incompatibilité et vos problèmes seraient soudainement résolus.
Je viens d'ajouter du code supplémentaire pour intercepter les exceptions lorsque nous essayons de charger Python. Je vais également envisager d'ajouter du code pour que Init Trace ("TRUE") écrive dans un fichier ainsi que dans le journal afin que nous puissions obtenir une trace du chemin d'exécution pour l'initialisation de Python. Espérons que les deux devraient être dans le prochain JMP 15 EA. (je ne sais pas quand le prochain est prévu).
Paul
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confus@Paul_Nelson ,
En effet. J'ai vérifié et validé que JMP et Python sont tous deux 64 bits.


Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusAvez-vous vérifié que votre Python et JMP sont identiques. 32 bits ou 64 bits. L'absence de fichier de vidage indique que JMP est probablement en train de tomber lorsqu'il tente de charger Python en tant que bibliothèque partagée. S'il y a une non-concordance entre JMP 32 bits / Python 64 bits ou JMP 64 bits / Python 32 bits, cela garantirait à peu près un plantage.
C'est quelque chose que JMP devrait essayer de valider avant d'essayer de charger, et quelque chose que nous devrions essayer d'attraper, mais cela pourrait toujours être une condition irrécupérable. Mais ce serait bien si JMP pouvait donner une notification.
Paul
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confus@Paul_Nelson ,
J'ai un cas en cours avec le support technique sur ce problème - SAS 7612709398.
J'ai essayé d'inclure la trace comme vous l'avez suggéré et cela plante Jmp. Cependant, je ne vois pas de fichier .dmp ou .jer généré que je puisse fournir au support technique.
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusNous envisageons de prendre en charge les environnements virtuels Python.
Le revers de la médaille est cette question :
Est-ce que la prise en charge de la variété des versions de Python installées par les utilisateurs est trop difficile à faire fonctionner et à continuer à fonctionner ?
Si tel est le cas, la solution peut être une version de Python fournie et installée par JMP, testée et connue pour fonctionner sans problème avec JMP. Les problèmes qui en découlent incluent la prise en charge de l'installation de packages locaux et de l'extension dans un environnement Python fourni par JMP.
Pour le moment, nous préférerions prendre en charge le Python installé par l'utilisateur, mais comme vous l'avez expérimenté, la variété à l'état sauvage peut en faire un défi.
Merci,
Paul
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusMerci pour tout cela.
Assez sûr des choses que vous mentionnez, mon problème est "JMP n'est actuellement pas au courant des environnements virtuels".
Après avoir installé Anaconda le plus récent avec python 3.7, puis trouvant que je veux utiliser tensorflow nécessitant 3.6, j'ai fait la première des options décrites ici... mis en place un environnement python3.6.
https://docs.anaconda.com/anaconda/user-guide/faq/#anaconda-faq-35
Étant donné que je commence juste avec python et que je n'ai pas de besoin particulier à propos de 3.7 - à ma connaissance - je pense que je pourrais tout désinstaller et recommencer avec une autre des options, comme un package d'installation Anaconda archivé avec 3.6 . Je vais voir comment ça se passe.
Mais il semble que ce genre de "besoin de versions différentes pour différentes choses" soit courant, comme c'est le cas pour R - c'était la lecture qui m'a fait plonger dans cette option plus compliquée et le lien ci-dessus n'était pas le seul endroit où j'ai vu le conseil d'utiliser un environnement virtuel.Je me demande donc si vous pouvez en dire plus sur les plans pour pouvoir lui dire de fonctionner dans un environnement virtuel particulier.
La chose InitTrace ("TRUE") plante JMP pour moi.Mais peut-être que si mon parcours n'impliquait pas un environnement virtuel, ce serait différent. Je vais travailler là-dessus et ouvrir un dossier de support technique pour obtenir de l'aide.Merci!
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusJe sais que c'est aussi frustrant pour nous que pour vous. Nous avons du mal à reproduire le problème sur nos machines, mais nous savons que certains clients ont des problèmes. La plupart de nos machines sont similaires, avec la même image corporative... Une chose qui est importante, le bit-ness de JMP et Python doit correspondre. Étant donné que JMP charge Python en tant que bibliothèque partagée, vous ne pouvez pas mélanger JMP et Python avec des bits différents. Si vous avez JMP 32 bits, vous devez pointer vers un Python 32 bits 3.6.1 ou plus récent. Si vous avez JMP 64 bits, il doit s'agir d'un Python 3.6.1 64 bits ou d'une version plus récente. Nous avons trouvé les meilleures chances de succès si vous n'avez qu'une seule installation de Python sur votre système. Dans JMP 14.1, s'il y en avait plusieurs sur le système, il n'essayerait même pas de charger Python. À l'heure actuelle, JMP n'a pas connaissance des environnements virtuels.
Ceux qui ont des problèmes, veuillez essayer l'option suivante dans votre Init Python()
Initiation Python( Init Trace("TRUE") );
Cette option, probablement non documentée (désolé), obligera JMP à afficher de nombreux détails sur l'endroit où il pense que Python se trouve, y compris les chemins qu'il voit et les entrées de registre pour Python qu'il découvre. Veuillez inclure sa sortie lorsque vous contactez le support technique.
Vous pouvez déterminer quel bit vous exécutez le script Python suivant dans votre environnement
structure d'importation
print( struct.calcsize("P") *8)
Cela devrait imprimer 32 ou 64 en fonction du nombre de bits du Python en cours d'exécution.
Remarque : JMP 14 peut être 32 bits ou 64 bits selon la version. Shrink-wrap est toujours 32 bits
JMP 15 n'est que 64 bits.
Je vais essayer de documenter au maximum Python Init() et les variables d'environnement.
JMP 15 ajoute 2 nouvelles variables d'environnement qu'il recherche :
JMP_LIB_PYTHON_PATH - il s'agit du chemin complet vers la bibliothèque partagée.
JMP_PYTHON_MODULE_PATH - Le sys.path de Python comme on pourrait s'y attendre dans les variables d'environnement Windows ou MacOS. Sur Windows, une liste séparée par des points-virgules, sur MacOS, une liste séparée par deux-points, PAS une liste JSL.
Sur ma machine, j'ai installé Anaconda 3.7.1 64 bits dans C:\ProgramData\Anaconda3
ça ressemblerait à
JMP_LIB_PYTHON_PATH=C:\ProgramData\Anaconda3\python37.dll
Le chemin vers la dll devrait être suffisant... et devrait être suffisant pour que Python Init() puisse être utilisé sans paramètres. Avec JMP_LIB_PYTHON_PATH et JMP_PYTHON_MODULE_PATH spécifiés, Python doit être entièrement spécifié même avec plus d'un interpréteur Python et Python Init() devrait fonctionner.
Comme indiqué 'Python sys path' as une variable d'environnement a été déprécié car il ne suit pas les conventions normales pour les variables d'environnement shell sous Windows ou MacOS. Il a des espaces dans le nom de la variable et il attend une liste JSL de composants de chemin { , } PAS les chemins délimités par deux-points attendus sous UNIX ou les chemins délimités par des points-virgules attendus sous Windows.
Nous avons tenté d'accorder une plus grande attention aux variables d'environnement Python PYTHONPATH et PYTHONHOME. D'après la documentation Python, la description de ces variables est :
PYTHONHOME
Modifiez l'emplacement des bibliothèques Python standard. Par défaut, les bibliothèques sont recherchées dans
préfixe/lib/pythonversion et exec_prefix/lib/pythonversion, où préfixe et exec_prefix sont
répertoires dépendant de l'installation, les deux par défaut étant /usr/local.
Lorsque PYTHONHOME est défini sur un seul répertoire, sa valeur remplace à la fois prefix et exec_prefix.
Pour spécifier des valeurs différentes pour ceux-ci, définissez PYTHONHOME sur prefix:exec_prefix.
PYTHONPATH
Augmentez le chemin de recherche par défaut pour les fichiers de module. Le format est le même que celui du shell
PATH : un ou plusieurs chemins de répertoire séparés par os.pathsep (par exemple, deux-points sous Unix ou
points-virgules sous Windows). Les répertoires inexistants sont silencieusement ignorés.
En plus des répertoires normaux, les entrées PYTHONPATH individuelles peuvent faire référence à des fichiers zip
contenant des modules Python purs (sous forme source ou compilée). Modules d'extension
ne peut pas être importé à partir de fichiers zip.
Le chemin de recherche par défaut dépend de l'installation, mais commence généralement par le préfixe/lib/pythonversion
(voir PYTHONHOME ci-dessus). Il est toujours ajouté à PYTHONPATH.
Un répertoire supplémentaire sera inséré dans le chemin de recherche devant PYTHONPATH comme décrit ci-dessus
sous Options d'interface. Le chemin de recherche peut être manipulé depuis un programme Python en tant que variable sys.path.
L'ordre de précédent dans lequel JMP 15 recherche les variables d'environnement :
Ordre de priorité des variables d'environnement et du script JSL du plus haut au plus bas
- Spécifié dans le script JSL dans Initiation Python( Chemin("") , Utiliser la version Python ("") , Chemin système Python( { "",... } ), ... )
- Spécifié dans les variables d'environnement système/shell
- Localisé automatiquement
- Registry, trouvé sur PATH var, ou System shell pour exécuter python ou conda, ... et devrait préférer un Python installé localement
sur un système, installez Python si les deux existent
JMP 14
J'ai d'abord examiné la variable d'environnement 'Python sys path' qui peut être soit le chemin d'accès à la dll, soit le sys.path complet exprimé sous la forme d'une liste JSL {"","",... }
PYTHONINSTALLPATH = le chemin d'accès au répertoire de niveau supérieur contenant l'installation de python, ou le répertoire contenant la bibliothèque partagée Python.
Le Init Python() déclaration
Paramètres:
Path() - Le chemin d'accès complet à la dll ou au répertoire de niveau supérieur Python contenant la dll.
Utilisez Python Version() - chaîne entre guillemets de la version python major.minor. Souvent suffisant à lui seul lorsque plus d'un Python est trouvé.
Python sys path() - la liste JSL des chemins de chaîne entre guillemets qui correspondent à la valeur Python sys.path. La spécification de ces 3 doit spécifier complètement l'installation de Python et doit remplacer toutes les valeurs d'environnement ou de registre.
Init Trace("TRUE") - sortie de débogage lors de l'initialisation Python de JMP dans le journal de JMP
Instructions d'impression de débogage ("TRUE"); - imprimer directement les instructions Python dans le journal JMP
Sortie d'impression de débogage("TRUE"); - imprimer directement la sortie Python dans le journal JMP
JMP 14 Python Init() accepte également les éléments suivants : Utilisez un seul ou l'autre, et correspondant au nombre de bits de votre installation JMP. JMP 32 bits ne peut pas utiliser Python 64 bits et JMP 64 bits ne peut pas utiliser Python 32 bits.
Utiliser Python 32 bits ("TRUE")
Utiliser Python 64 bits ("TRUE")
JMP 15 a supprimé les paramètres facultatifs ci-dessus car JMP 15 est 64 bits et peut seulement utiliser Python 64 bits. Tous les paramètres à Init Python() sont facultatifs, Si la détection automatique dans le registre ou les variables d'environnement pointent vers un Python valide, rien de plus devrait besoin dans votre Init Python()
N'hésitez pas à contacter le support technique de JMP, nous souhaitons que les fonctionnalités Python de JMP soient utiles et améliorent la puissance fournie par JMP. Nous voulons résoudre ces problèmes pour que cela fonctionne.
Paul
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confussuivant...
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusMerci! ça ira. Je ne peux qu'ajouter que j'ai également essayé de mettre path() de dll dans python init() et que cela plante également au lieu de se plaindre au moins qu'il ne peut pas le trouver. Dans l'ensemble, j'ai probablement aussi besoin de l'aide du support technique, mais j'espérais qu'il y avait juste quelques éclaircissements qui seraient également utiles à d'autres.Re : Capacités JMP 14 Python - fonctionnent ? Je suis confusJe peux confirmer que malgré l'installation de ma distribution anaconda dans C:\ et la configuration d'une variable d'environnement comme détaillé dans le poste , je n'arrive pas à le faire fonctionner. Il plante toujours JMP. Je vous tiendrai au courant si je reçois une réponse du support technique, si vous le comprenez, veuillez faire de même
Re : Capacités JMP 14 Python - fonctionnent ? Je suis confus@hardner ,
Je suis dans le même bateau que toi. J'essaie de configurer JMP pour Python depuis environ 2 semaines maintenant. J'ai intégré avec succès SAS et R de JMP, mais l'intégration de Python a été pour le moins peu claire et longue. Je suis déçu de savoir que JMP 15 early adopter n'a pas non plus d'améliorations pour corriger cette intégration. moi aussi je suivais ça de près poste et espérait que cela serait corrigé dans JMP 15 et que l'intégration deviendrait plus fluide.
J'utilise actuellement JMP 14 et Python 3.7.1 . On m'a conseillé d'installer la distribution Python/Anaconda directement sous la racine C:/ et je suis sur le point d'essayer. Au cas où cela fonctionnerait, je vous donnerai un aperçu de ce qui a fonctionné et je le mettrai à jour ici.