- Vue d'ensemble (Overview)
- Cryptographie
- Base de donnés
- Java
- Python
- Notes de publication
- À propos du package d'activités Python
- Compatibilité du projet
- Problèmes connus et limitations
- APIweb
Problèmes connus et limitations
Solutions aux problèmes connus lors de l'exécution de scripts Python avec le package d'activités Python, y compris les problèmes de fil de discussion, de chemin de fichier et de conversion de type.
Il est important de connaître les comportements suivants lorsque vous exécutez des scripts Python avec le package d’activités Python. Chacun inclut une solution de contournement.
Les scripts s'exécutent sur un fil de discussion en arrière-plan
Schéma: un script échoue avec l'erreur suivante, généralement lors de l'importation d'une bibliothèque qui installe des gestionnaires de signaux, telle que xlwings ou un autre pont Excel ou GUI:
ValueError: set_wakeup_fd only works in main thread of the main interpreter
Cause: le code à l'intérieur d'une étendue Python s'exécute sur un fil de travail, et non sur le fil principal du processus, de sorte que le code Python qui nécessite le fil principal échoue.
Action: utilisez l'une des approches suivantes:
- Préférez les bibliothèques qui ne nécessitent pas le fil principal, par exemple
openpyxloupandasau lieu dexlwingspour lire et écrire des fichiers Excel. - Exécutez le code sensible au fil de discussion principal dans un processus Python distinct, lancé avec
subprocesset pointé vers un exécutable Python réel, tel que celui renvoyé parshutil.which("python3")
À l'intérieur de l'activité, sys.executable pointe vers le processus hôte plutôt que vers votre interprète Python, ce n'est donc pas une cible valide pour subprocess.
Les chemins de fichiers relatifs se résolvent par rapport à un dossier inattendu
Schéma: un chemin relatif tel que open("data.csv") lit ou écrit vers un emplacement que vous n'aviez pas prévu, et le fichier semble être manquant.
Cause: lorsque la propriété DossierTravail n'est pas définie, le répertoire de travail du script en cours d'exécution est le propre dossier de runtime de l'activité, et non votre dossier de projet.
Action: utilisez l'une des approches suivantes:
- Définissez la propriété DossierTravail de l'activité Étendue Python sur le dossier dans lequel votre script doit s'exécuter.
- Appelez
os.chdir(...)au début de votre script. - Utilisez des chemins absolus pour accéder aux fichiers.
Get Python Object ne peut pas convertir chaque type Python
Problème: l’activité Obtenir l’objet Python échoue avec l’erreur suivante:
Get Python Object: Error converting Python object
Cause: l’activité convertit une valeur de retour Python en type.NET. Les objets Python complexes ou natifs, par exemple un dict, un list ou un fournisseur DataFrame, ne peuvent pas toujours être convertis.
Action: renvoyez une chaîne de votre fonction Python et convertissez-la dans votre workflow:
- En Python, sérialisez la valeur en JSON avec
json.dumps(...), ou avecdf.to_json(orient="records")pour un chatDataFrame. - Récupérez la valeur avec Obtenir l'objet Python en tant que
String. - Désérialisez-le dans votre workflow.