Napisałem wiele skryptów Python za pomocą ArcPy w ArcGIS 10, a jak dotąd mój jedyny sposób debugowania ogranicza się do drukowania komunikatów w oknie wyników geoprzetwarzania arcpy.AddMessage()
.
Czy są jeszcze jakieś inne opcje, takie jak ustawianie punktów przerwania?
Metoda Jasona działa świetnie. Jeśli masz błąd w zestawie narzędzi, taki jak sprawdzanie poprawności, twoje IDE prawdopodobnie nie będzie w stanie zlokalizować problemu, ponieważ zestawy narzędzi są zakodowane. Przynajmniej WING nie był w stanie tego ustalić.
arcpy
arcgis-10.0
debugging
Garbarz
źródło
źródło
Odpowiedzi:
Zwykle debugery / środowiska IDE Pythona zakładają, że skrypt Pythona działa w tym samym procesie, co on sam, więc debugowanie skryptu uruchomionego w ArcMap.exe jest od razu gotowe - musisz uzyskać wystarczającą ilość środowiska skryptowego GP uruchomionego w skrypcie Python, jak możesz debuguj z.
Metodą, która działała dla mnie bardzo dobrze w ciągu ostatnich kilku lat, jest napisanie prostego skryptu, który po prostu wywołuje narzędzie i używa go jako mojego głównego skryptu w Python IDE (Wing lub Pythonwin) i ustawiam punkty przerwania w pliku .py narzędzia plik otwarty również w tej samej sesji IDE.
Zasadniczo robię to:
A mój skrypt wywołujący jest zwykle dość prosty:
Próbowałem winpdb do debugowania skryptów działających w ArcMap, ale nigdy nie miałem szczęścia. Jeśli chcesz go wypróbować i działa dobrze, podziel się swoimi odkryciami.
źródło
Możesz to zmienić w oknie dialogowym opcji GP, po prostu wskaż swój plik wykonywalny do wyboru dla edytora / debuggera.
źródło
Dla użytkowników w wieku 10 lat zdecydowanie najlepszą drogą jest post Jason, który oznaczyłem jako „najlepszą odpowiedź”. W przypadku użytkowników 9.3 mogłem postępować zgodnie z instrukcjami obsługi ESRI KB, do których link znajduje się w poście Brada, aby działał.
Ostatecznie kluczem do domyślnej edycji skryptów Python ArcGIS w Pyscripter była edycja „akcji” systemowej dla „zarejestrowanych typów plików” kończących się na pliki * .py (krok # 4). Utworzyłem nowy typ akcji „Edytuj”, a następnie podałem ścieżkę Pyscripter.exe. Gdy to zrobiłem, domyślną akcją edycji była konfiguracja uruchamiania Pyscriptera zamiast IDLE.
Ciąg, którego użyłem (ponieważ został obcięty w oknie dialogowym pokazanym poniżej) to:
źródło
Nie wiem, jak to będzie działać z Arcpy, ale możesz wypróbować pdb :
źródło
Najprostszym sposobem, w jaki znalazłem sposób debugowania mojego kodu, jest na stałe zakodować moje dane wejściowe do ścieżki pliku istniejącego zestawu danych. Na przykład:
Oprócz okna wyników, okno Pythona dostarcza pomocnych komunikatów o błędach i / lub umożliwia testowanie fragmentów kodu.
Każde dobre IDE ma sondę debugującą, która będzie miała w pamięci całe przetwarzanie do bieżącego punktu przerwania. Dzięki temu możesz zobaczyć, co dzieje się z danymi. Ustaw punkty przerwania, w których chcesz wstrzymać skrypt. Użyj warunkowych punktów przerwania, jeśli chcesz zatrzymać pętlę przy określonej iteracji. Poznaj również swoje wersje Arc i jakie funkcje są dostępne dla tych wersji.
źródło