Ich habe in ArcGIS 10 viele Python-Skripten mit ArcPy geschrieben. Bislang kann ich nur Nachrichten im Fenster mit den Geoverarbeitungsergebnissen drucken arcpy.AddMessage()
.
Gibt es noch andere Möglichkeiten, wie zum Beispiel das Setzen von Haltepunkten?
Jasons Methode funktioniert großartig. Wenn Sie einen Fehler in Ihrer Toolbox haben, z. B. eine Überprüfung, kann Ihre IDE das Problem möglicherweise nicht ermitteln, da die Toolboxen codiert sind. Zumindest konnte WING es nicht genau bestimmen.
arcpy
arcgis-10.0
debugging
Gerber
quelle
quelle
Antworten:
In der Regel gehen Python-Debugger / -IDEs davon aus, dass das Python-Skript im selben Prozess ausgeführt wird wie es selbst. Das Debuggen eines in ArcMap.exe ausgeführten Skripts ist also ein Kinderspiel debuggen mit.
Eine Methode, die in den letzten Jahren für mich sehr gut funktioniert hat, besteht darin, ein einfaches Skript zu schreiben, das nur das Tool aufruft und dieses als Hauptskript in der Python-IDE (Wing oder Pythonwin) verwendet und meine Haltepunkte in der .py-Datei des Tools festgelegt hat Die Datei wird auch in derselben IDE-Sitzung geöffnet.
Im Grunde mache ich das:
Und mein Anruferskript ist normalerweise ziemlich einfach:
Ich habe versucht, mit winpdb Skripte zu debuggen, die in ArcMap ausgeführt werden, aber ich hatte noch nie Glück. Wenn Sie es ausprobieren möchten und es funktioniert, teilen Sie uns bitte Ihre Ergebnisse mit.
quelle
Sie können es im Dialogfeld GP-Optionen ändern. Zeigen Sie einfach auf die ausführbare Datei Ihrer Wahl für den Editor / Debugger.
quelle
Für Benutzer von 10 Jahren ist es eindeutig am besten, Jasons Beitrag als "beste Antwort" zu markieren. Für Benutzer von 9.3 war ich in der Lage, die Anweisungen des ESRI KB-Supports zu befolgen, die in Brads Beitrag verlinkt sind, damit es funktioniert.
Letztendlich bestand der Schlüssel zur Standardbearbeitung von ArcGIS-Python-Skripten in Pyscripter darin, die Systemaktion für "registrierte Dateitypen" zu bearbeiten, die mit * .py-Dateien enden (Schritt 4). Ich habe einen neuen Aktionstyp "Bearbeiten" erstellt und dann den Pfad "Pyscripter.exe" eingefügt. Sobald ich dies getan habe, war die Standardbearbeitungsaktion eingerichtet, um Pyscripter anstelle von IDLE zu starten.
Die Zeichenfolge, die ich verwendet habe (weil sie im unten gezeigten Dialogfeld abgeschnitten wurde), lautet:
quelle
Ich weiß nicht, wie das mit arcpy funktioniert, aber Sie können pdb ausprobieren :
quelle
Der einfachste Weg, meinen Code zu debuggen, besteht darin, meine Eingaben in den Dateipfad eines vorhandenen Datasets fest zu codieren. Zum Beispiel:
Zusätzlich zum Ergebnisfenster werden im Python-Fenster hilfreiche Fehlermeldungen angezeigt und / oder Sie können Codeausschnitte testen.
Jede gute IDE verfügt über einen Debug-Test, der Ihre gesamte Verarbeitung bis zum aktuellen Haltepunkt im Speicher hat. Damit können Sie sehen, was mit den Daten los ist. Legen Sie Haltepunkte fest, an denen Sie das Skript anhalten möchten. Verwenden Sie bedingte Haltepunkte, wenn Sie eine Schleife bei einer bestimmten Iteration anhalten möchten. Informieren Sie sich auch über Ihre Arc-Versionen und welche Funktionen für diese Versionen verfügbar sind.
quelle