J'ai écrit de nombreux scripts Python à l'aide d'ArcPy dans ArcGIS 10, et jusqu'à présent, mon seul moyen de débogage est limité à l'impression de messages dans la fenêtre de résultats du géotraitement arcpy.AddMessage()
.
Existe-t-il d'autres options, telles que la définition de points d'arrêt?
La méthode de Jason fonctionne très bien. Si vous avez un bogue dans votre boîte à outils, tel que la validation, votre environnement de développement intégré ne sera probablement pas en mesure de localiser le problème car les boîtes à outils sont codées. Au moins, WING n'était pas capable de le localiser.
arcpy
arcgis-10.0
debugging
Tanneur
la source
la source
Réponses:
Les débogueurs / IDE Python supposent généralement que le script Python s’exécute dans le même processus. Le débogage d’un script s’exécutant dans ArcMap.exe est donc immédiatement terminé. déboguer avec.
Une méthode qui a très bien fonctionné pour moi ces dernières années consiste à écrire un script simple qui appelle simplement l'outil et à l'utiliser comme script principal dans l'EDI Python (Wing ou Pythonwin) et à définir mes points d'arrêt dans le fichier .py de l'outil. fichier également ouvert dans la même session IDE.
Donc, fondamentalement, je fais ceci:
Et mon script d'appelant est généralement assez simple:
J'ai essayé avec winpdb de déboguer des scripts exécutés dans ArcMap, mais je n'ai jamais eu de chance. Si vous voulez l'essayer et le faire fonctionner correctement, partagez vos découvertes.
la source
Vous pouvez le modifier à partir de la boîte de dialogue des options du GP, il vous suffit de pointer sur l'exécutable de votre choix pour l'éditeur / le débogueur.
la source
Pour les utilisateurs de 10, le meilleur chemin à suivre est clairement le message de Jason, que j'ai qualifié de "meilleure réponse". Pour les utilisateurs de la version 9.3, j'ai pu suivre les instructions du support technique ESRI KB liées dans le message de Brad pour le faire fonctionner.
En fin de compte, la clé pour accéder à l'édition par défaut des scripts ArcGIS Python dans Pyscripter consistait à éditer "l'action" du système pour les "types de fichiers enregistrés" se terminant par des fichiers * .py (étape 4). J'ai créé un nouveau type d'action "Modifier" puis inclus le chemin Pyscripter.exe. Une fois que j'ai fait cela, l'action d'édition par défaut a été configurée pour lancer Pyscripter au lieu de IDLE.
La chaîne que j'ai utilisée (car elle a été coupée dans la boîte de dialogue ci-dessous) est la suivante:
la source
Je ne sais pas comment cela fonctionnera avec arcpy, mais vous pouvez essayer pdb :
la source
Le moyen le plus simple que j'ai trouvé pour déboguer mon code est de coder en dur mes entrées dans le chemin de fichier d'un ensemble de données existant. Par exemple:
Outre la fenêtre de résultats, la fenêtre python génère des messages d'erreur utiles et / ou vous permet de tester des extraits de code.
Tout bon IDE a une sonde de débogage qui aura, en mémoire, tous vos traitements jusqu’au point de rupture actuel. Avec cela, vous pouvez voir ce qui se passe avec les données. Définissez les points d'arrêt où vous souhaitez suspendre le script. Utilisez des points d'arrêt conditionnels si vous souhaitez arrêter une boucle à une itération spécifique. Vous devez également connaître vos versions Arc et les fonctions disponibles pour ces versions.
la source