Mehr

Debuggen von Python-Skriptwerkzeugen von ArcPy?

Debuggen von Python-Skriptwerkzeugen von ArcPy?


Ich habe vor kurzem ein Skript-Tool in einer TBX-Datei zum Spielen erhalten.

Ich würde gerne sehen, wie das Tool in einem Debugger ausgeführt wird, um eine bessere Vorstellung davon zu bekommen, wie es funktioniert. Ich habe mehrere Wege dazu ausprobiert, aber alle scheinen fehlgeschlagen zu sein:

  1. In Visual Studio oder einer anderen IDE öffnen: Der Windows Explorer erkennt .tbx natürlich nicht als Container und zeigt nur Müll an.
  2. Klicken Sie mit der rechten Maustaste auf das Tool und verwenden Sie die Option "Debug": Das Tool wird wie gewohnt ausgeführt, aber ich habe keine Kontrolle über Stepping, Breakpoints usw. Ich kann den Code während der Ausführung nicht sehen.
  3. Klicken Sie mit der rechten Maustaste auf das Tool und verwenden Sie die Schaltfläche "Bearbeiten": Python-Skript wird in NotePad geöffnet. Es scheint keine Möglichkeit zu geben, einen anderen Editor auszuwählen. Natürlich hat Notepad keine Build- oder Kompilierungsoption, daher kann ich den Code nicht einmal ändern, um die Ausgabe zu drucken.
  4. Kopieren des Codes in Visual Studio und Ausführen dort: Beim Versuch, Debug von ArcMap auszuführen, stoße ich auf dieses Problem

So debugge/bearbeite ich normalerweise Python-Dateien für Python-Skriptwerkzeuge in ArcMap (und wie ESRI vorschlägt)

Legen Sie zunächst Ihren Editor (wie PythonWin oder Wing) unter Geoverarbeitung > Geoverarbeitungsoptionen fest. Klicken Sie anschließend im Fenster Katalog mit der rechten Maustaste auf Ihr Werkzeug und klicken Sie auf Bearbeiten.

Die Geoverarbeitung liest Ihren Skriptcode erst, wenn Sie im Dialogfeld mit dem Skriptwerkzeug auf OK klicken oder im Python-Fenster die EINGABETASTE drücken.

Ein gängiger Arbeitsablauf bei der Arbeit mit Python-Skriptwerkzeugen sieht wie folgt aus:

  • Bearbeiten Sie Ihr Skript (z. B. mit PythonWin oder IDLE) und speichern Sie Ihre Änderungen, aber beenden Sie nicht die Bearbeitungsanwendung.
  • Führen Sie das Skripttool aus.
  • Nehmen Sie bei Bedarf weitere Codeänderungen vor, speichern Sie Ihre Änderungen, beenden Sie jedoch nicht die Bearbeitungsanwendung.
  • Führen Sie das Skripttool erneut aus.
  • Wenn Sie sicher sind, dass Ihr Skript ordnungsgemäß funktioniert, beenden Sie die Bearbeitungsanwendung.

Um Python-Toolboxen zu debuggen, habe ich normalerweise eine separate Datei "debug.py" in meinem Projekt, in der ich nur bestimmte Module oder Codeschnipsel teste. Das Skript ist sehr einfach, wie folgt eingerichtet:

import os import arcpy def main(): # Code zum Testen hier, setze Breakpoint und Step Thru if __name__ == "__main__": main()

Wenn eine Python-Toolbox einen Fehler ausgibt, überprüfe ich die Zeilennummer und kopiere die Funktion oder Methode, die die fragliche Zeile enthält, in debug.py. Ich kodiere die verschiedenen Eingabeparameterwerte, die das Tool normalerweise haben würde, hart, und gehe meinen Code durch und finde genau den Fehler. Schließlich übernehme ich die Änderungen an der Python-Toolbox-.pyt-Datei. Ich verwende derzeit Visual Studio-Code, um meine Python-Skripte auszuführen.

bearbeiten:

Ich möchte auch diesen Link hinzufügen: So debuggen Sie Python-Toolboxen in 3 einfachen Schritten. Dieser Artikel zeigt eine weitere einfache Methode zum Debuggen einer Python-Toolbox, indem Sie einfach eine main()-Methode hinzufügen:

class MyToolbox(object): def __init__(self): class MyTool(object): def __init__(self): self.label = 'Tool 1' def getParameterInfo(self): # parameters… return params def execute(self, parameters, Messages): # do stuff… return def main(): # Breakpoint hier setzen, step thru tbx = MyToolbox() tool = MyTool() tool.execute(tool.getParameterInfo(), None) if __name__ == "__main__" : hauptsächlich()

Schau das Video: 6 - Search Cursors - ArcMap Scripting with Python and Arcpy