Я написал много скриптов Python с использованием ArcPy в ArcGIS 10, и до сих пор мой единственный способ отладки ограничен печатью сообщений с использованием окна результатов геообработки arcpy.AddMessage()
.
Есть ли другие варианты, такие как установка точек останова?
Метод Джейсона прекрасно работает. Если у вас есть ошибка в вашем наборе инструментов, такая как проверка, ваша IDE, вероятно, не сможет точно определить проблему, потому что наборы инструментов закодированы. По крайней мере, WING не смог точно это определить.
arcpy
arcgis-10.0
debugging
дубильщик
источник
источник
Ответы:
Обычно отладчики / IDE Python предполагают, что скрипт Python выполняется в том же процессе, что и сам, поэтому отладка скрипта, запущенного в ArcMap.exe, не вызывает затруднений - вам нужно получить достаточно среды сценариев GP, загруженной в скрипт Python, как вы можете отладить с.
Метод, который очень хорошо работал для меня в течение последних нескольких лет, - это написать простой скрипт, который просто вызывает инструмент, и использовать его в качестве основного сценария в Python IDE (Wing или Pythonwin), а мои точки останова установить в .py инструмента. файл также открыть в том же сеансе IDE.
Так что в основном я делаю это:
И мой скрипт вызова обычно довольно прост:
Я пробовал winpdb для отладки скриптов, работающих в ArcMap, но мне никогда не везло. Если вы хотите попробовать это, и у вас это получается хорошо, поделитесь своими выводами.
источник
Вы можете изменить его в диалоговом окне параметров GP, просто укажите свой исполняемый файл для редактора / отладчика.
источник
Для пользователей 10 лет, очевидно, лучший путь - это сообщение Джейсона, которое я пометил как «лучший ответ». Для пользователей 9.3 я смог выполнить инструкции по поддержке ESRI KB, ссылки на которые есть в сообщении Брэда.
В конечном итоге ключом к редактированию скриптов Python ArcGIS в Pyscripter по умолчанию было редактирование «действия» системы для «зарегистрированных типов файлов», оканчивающихся на * .py файлы (шаг # 4). Я создал новый тип действия «Изменить», а затем включил путь Pyscripter.exe. Как только я это сделал, стандартное действие редактирования было настроено так, чтобы запускать Pyscripter вместо IDLE.
Я использовал строку (потому что она была обрезана в диалоговом окне, показанном ниже):
источник
Я не знаю, как это будет работать с arcpy, но вы можете попробовать pdb :
источник
Самый простой способ отладки моего кода - это жесткий код моих входных данных в путь к файлу существующего набора данных. Например:
В дополнение к окну результатов, окно Python выдает полезные сообщения об ошибках и / или позволяет тестировать фрагменты кода.
Любая хорошая IDE имеет отладочный зонд, который будет иметь в памяти всю вашу обработку до текущей точки останова. При этом вы можете увидеть, что происходит с данными. Установите точки останова, где вы хотите приостановить сценарий. Используйте условные точки останова, если вы хотите остановить цикл на определенной итерации. Кроме того, узнайте свои версии Arc и какие функции доступны для этих версий.
источник