ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Отладка инструментов-скриптов

  • Использование выражений печати
  • Использование отладчиков

Ошибки кодирования неизбежны, и существует два главных способа как установить, где произошла ошибка:

  • Добавьте в ваш код какое-нибудь выражение печати, что поможет выделить проблему.
  • Используйте интерактивный отладчик.

Использование выражений печати

Использование команды print для обнаружения ошибок является очевидным и наиболее распространенным способом. Поскольку инструменты-скрипты имеют доступ к диалоговому окну инструмента, отображающему ход выполнения процесса, вы можете отредактировать ваш скрипт таким образом, чтобы он содержал вызовы в адрес AddMessage(), AddWarning() или AddError() для отображения в этом диалоговом окне значений и информации о контрольных точках процесса. Другой вариацией может быть использование независимого метода возвращаемых сообщений, например, метода win32ui модуля MessageBox. В этом методе отображается всплывающее диалоговое окно. Поскольку для того, чтобы продолжить выполнение, вам нужно нажать OK в диалоговом окне, данный метод позволяет вам контролировать процесс выполнения скрипта. Приведем пример использования обоих методов.

import arcpy
import win32ui
import win32con
n = 5
# Print message to progress dialog
#
arcpy.AddMessage("Value of n = {}".format(n))
# Issue a popup dialog with OK and Cancel button
#
val = win32ui.MessageBox("Value of n = {}".format(n), "title",
                         win32con.MB_OKCANCEL)
# Based on the button clicked, you can branch execution
#
if val == 1:
    arcpy.AddMessage("You clicked OK")
else:
    arcpy.AddError("You clicked Cancel")
    raise arcpy.ExecuteError, "Execution stops due to Cancel button click"
arcpy.AddMessage("This statement reached")

Использование отладчиков

Другой метод заключается в применении интерактивной среды разработки (IDE) Python, поддерживающей отладку. Отладчики позволяют вам устанавливать точки разрыва, шагать в, из или перешагивать через отдельные строки кода; а также просматривать содержимое переменных, без изменения вашего кода. По сравнению с выражениями вставки printотладчики намного эффективней и обычно позволяют быстро обнаружить ошибку.

Стандартные среды разработки (IDE):

  • Среда разработки (IDE) Python, поставляемая вместе с Python
  • PythonWin
  • PyScripter
  • Коммерческие системы, такие как Wing IDE и PyCharm

Одним из способов использования отладчика заключается в открытии скрипта непосредственно в IDE, изменении его таким образом, чтобы все параметры имели значение, и последующей отладки. Этот способ достаточно хорошо работает в простых случаях. Однако, если ваш скрипт использует параметры представления слоя или таблицы, то эти переменные должны создаваться на лету. Комплексные параметры, такие как матрица соответствия полей или пространственная привязка, очень трудно создать как переменные.

В идеале для отладки IDE вам надо открыть диалоговое окно скрипта, ввести параметры и запустить IDE со своим кодом. Это можно сделать, внеся несколько простых изменений, описанных ниже.

Использование GetParameterAsText

Шаг первый – это изменение вашего скрипта таким образом, чтобы он использовал GetParameterAsText вместо sys.argv, как было показано в разделе Параметры инструмента-скрипта. Это изменение вы можете сохранить – нет необходимости изменять код обратно на sys.argv.

Запустите инструмент и отладку.

  1. Установите Отладчик (как PythonWin), нажав Геообработка (Geoprocessing) > Опции геообработки (Geoprocessing Options).
    Подсказка:

    Если у вас установлен PythonWin и вы хотите использовать его как свой отладчик, то соответствующий путь к настройкам Отладчика будет зависеть от вашей установки, но вероятнее всего это будет C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\Pythonwin.exe

  2. В окне Каталога щелкните правой кнопкой инструмент и нажмите Отладить
  3. Откройте инструмент-скрипт из набора инструментов, введите любые параметры, которые вы хотите установить, затем нажмите ОК. Открытие IDE может занять несколько секунд. Отобразится код скрипта, и вы можете работать с приложением по отладке в обычном порядке.
    Примечание:

    Параметр Отладчик всегда запускает скрипт в приоритетном режиме.

Вы можете задать точку разрыва, чтобы скрипт выполнялся до точки разрыва, а также использовать любые другие опции отладчика. Установленные вами в диалоговом окне значения параметров будут отражены в GetParameterAsText.

При запуске скрипт и приложение будут продолжать взаимодействовать, как обычно. Так что, если вы используете такие функции, как AddMessage, AddWarning или AddError, то в приложении появятся соответствующие уведомления. Если вы используете функции прогрессора, то индикатор выполнения процесса будет обновляться по мере выполнения вашего сценария. Когда скрипт будет завершен, вы можете вернуться к приложению, закрыв отладчик. Либо, если вы планируете повторную отладку вашего инструмента-скрипта, вы можете оставить отладчик открытым и нажать Отменить в диалоговом окне инструмента, отображающем ход процесса.

Связанные разделы

  • Инструменты внедрения скриптов и защиты паролем

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация