Salut tout le monde,
J'utilise Application Builder pour développer une application avec l'intégration Python. Je prévois de le compiler dans un complément pour pouvoir le partager avec d'autres utilisateurs, cependant, j'ai besoin d'un moyen de configurer correctement l'initialisation Python pour tous les utilisateurs.
La façon dont j'ai exécuté l'application ne fonctionnera que pour moi (l'utilisateur EstelleS1 et mon environnement, JMPPythonEnvironment) :
appNS:PythonPathText = "C:\Users\EstelleS1\AppData\Local\Programs\Python\Python37\JMPPythonEnvironment\Scripts\python37.dll";
appNS:PythonSysPathText = {"",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37\\JMPPythonEnvironment\\Scripts\\python37.zip",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37\\DLLs",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37\\lib",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37\\JMPPythonEnvironment",
"C:\\Users\\EstelleS1\\AppData\\Local\\Programs\\Python\\Python37\\JMPPythonEnvironment\\lib\\site-packages"};
Python Init(
Path( PythonPathText ),
Python Sys Path( PythonSysPathText )
);(appNS fait référence à mon espace de noms d'application)
Les autres utilisateurs auront beaucoup de privilèges d'administrateur, donc je pensais mettre en place un flux de travail où un nouvel utilisateur cliquera sur un bouton dans le lanceur d'applications pour télécharger des fichiers texte avec les chaînes de chemin Python et de chemin sys, puis l'application prendra ces fichiers et enregistrez des copies dans un nouveau dossier (où $DESKTOP doit être un emplacement accessible sur tous les ordinateurs des utilisateurs).
PythonPathButtonPress=Function({this},
// This function is called when the button is pressed
name = this << Get Button Name;
pickPythonPathFile = Pick File("Please select Python Path text file");
pickPythonSysPathFile = Pick File("Please select Python Sys Path text file");
PythonPathFile = Load Text File( pickPythonPathFile );
PythonSysPathFile = Load Text File( pickPythonSysPathFile );
PythonConfigFolder = ( "$DESKTOP/JMPPython Config/" );
NEWPythonPathFile = (PythonConfigFolder || "PythonPath.txt" );
NEWPythonSysPathFile = (PythonConfigFolder || "PythonSysPath.txt" );
PythonConfigDir = Create Directory( PythonConfigFolder );
Save Text File( NEWPythonPathFile, PythonPathFile );
Save Text File( NEWPythonSysPathFile, PythonSysPathFile );
);Ainsi, une fois cette opération effectuée la première fois, l'utilisateur ne devrait pas avoir besoin de cliquer sur le bouton pour configurer à nouveau Python par la suite. Et puis lors de l'exécution des parties d'intégration Python du complément, l'application recherchera automatiquement pour ouvrir ces fichiers copiés dans l'emplacement du dossier accessible (que ce soit $DESKTOP ou quelque chose de mieux) :
PythonPathFile = Convert File Path( "$DESKTOP\JMPPython Config\PythonPath.txt", search );
PythonSysPathFile = Convert File Path( "$DESKTOP\JMPPython Config\PythonSysPath.txt", search );
Try( appNS:PythonPathText = Load Text File( PythonPathFile ), New Window("Python Initialization Error", << Modal, Text Box("Need to configure Python first!") ); Throw() );
Try( appNS:PythonSysPathText = Load Text File( PythonSysPathFile ), New Window("Python Initialization Error", << Modal, Text Box("Need to configure Python first!") ); Throw() );
Python Init(
Path( PythonPathText ),
Python Sys Path( PythonSysPathText )
);Mais cela n'a pas fonctionné. J'ai reçu l'erreur "Le module spécifié est introuvable. dans l'accès ou l'évaluation de 'Python Init' , Python Init/*###*/(Path( PythonPathText ), Python Sys Path( PythonSysPathText ))". Je ne sais pas exactement ce qui cause cette erreur ou comment y remédier.
J'apprécierais si quelqu'un peut donner un aperçu ou une meilleure solution à ce problème.