Отладка кода Python

Python используется во многих частях ArcGIS Pro. Integrated Development Environments (IDE) – это приложения, обеспечивающие удобную среду редактирования и отладки для специалистов, которые пишут коды. IDE делают написание и устранение неполадок кода более эффективными. Python IDE используются для написания и отладки инструмента-скрипта, а также проверки набора инструментов Python и исходного кода.

Microsoft Visual Studio

Следующие компоненты ArcGIS Pro могут быть отлажены в Visual Studio:

  • Исходный код инструмента-скрипта
  • Проверка инструмента-скрипта
  • Наборы инструментов Python

Необходимо установить следующий Visual Studio Workload: Python development. См. https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio.

Чтобы приступить к отладке кода Python в ArcGIS Pro, выполните следующие действия:

  1. В ArcGIS Pro откройте панель Геообработка инструмента, который надо отладить.

    Окно Python и все блокноты должны быть закрыты.

  2. Запустите Microsoft Visual Studio и откройте скрипт, который надо отладить.
  3. Щелкните в главном меню Отладка > Присоединение к процессу.
  4. В диалоговом окне Присоединение к процессу dialog щелкните кнопку Выбрать.
  5. В диалоговом окне Выбрать тип кода поставьте отметку Отладка этих типов кода, отметьте Python и нажмите OK.

    Вам нужно выбрать Присоединение к: код Python. Не используйте тип кода по умолчанию Автоматически: код Managed (v4.6, v4.5, v4.0), код Python.

  6. Щелкните в списке доступных процесс ArcGISPro.exe и нажмите на кнопку Присоединить.
  7. Чтобы начать отладку, запустите свой инструмент в ArcGIS Pro.

После отключения IDE от ArcGIS Pro, исключения в коде Python не будут отображаться корректно. Чтобы избежать этого, необходимо заново подключить IDE или перезапустить ArcGIS Pro.

Примечание:

Microsoft Visual Studio 2017 можно использовать для отладки ArcGIS Pro 2.1 и выше. Ранние версии любого из этих приложений работать не будут.

Версия PyCharm Professional

Следующие компоненты ArcGIS Pro могут быть отлажены в PyCharm Professional:

  • Исходный код инструмента-скрипта
  • Проверка инструмента-скрипта

модуль pdb

Модуль pdb – часть стандартной библиотеки Python. Он не является полностью готовым IDE, но может использоваться для интерактивной отладки исходного кода. Модуль pdb не может быть использован для отладки внутри ArcGIS Pro, но может быть использован для отладки автономных скриптов, включая исходный код для инструментов-скриптов.

Использование модуля pdb помогает при отладке кода инструмента-скрипта, выполняемого в автономном скрипте Python. Просто добавьте точку разрыва (используя import pdb;pdb.set_trace()) в код инструмента-скрипта, затем запустите скрипт Python, который вызывает запуск инструмента. При обнаружении точки разрыва Python перейдет в интерактивный режим. Не забудьте удалить код точки разрыва после окончания отладки.

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

Код Python проверки инструмента-скрипта встроен в инструмент, и его необходимо скопировать во внешний файл Python (.py) для отладки. Теперь вы можете открыть файл Python в IDE установить точки разрыва, добавить IDE к ArcGIS Pro и запустить инструмент-скрипт. По окончании изменения кода скопируйте содержимое файла Python обратно в инструмент проверки.

В следующем примере, val.py содержит класс ToolValidator и сохраняется в той же директории, что и набор инструментов .

import sys
import val

# the following code will reload the val.py module if it's modified
if 'val' in sys.modules:
    import importlib
    importlib.reload(val)

# ToolValidator should exist at the global scope
ToolValidator = val.ToolValidator

При работе пользователя с инструментом код проверки инструмента-скрипта выполняется неоднократно.

Наборы инструментов отладки Python

Вы не можете отлаживать набор инструментов Python (.pyt) напрямую, вместо этого его необходимо выполнить отладку с помощью файла Python (.py). Выполните следующие действия для отладки набора инструментов Python:

  1. Создайте внешний файл Python в той же директории, где находится набор инструментов Python.
  2. Скопируйте код в функции execute набора инструментов Python и вставьте его в функцию func() в новом файле Python. Скопируйте все другие необходимые функции.
  3. Замените код в наборе инструментов Python для функции execute на следующий:
  4. import execute_code
    execute_code.func(parameters)
  5. Откройте файл Python в Visual Studio и задайте точки отключения, используя описанные выше шаги по отладке набора инструментов Python.

Следующий код является примером вызываемой функции execute в панели инструментов Python и отдельного файла Python.

В следующем примере, runCode.py сохраняется в той же директории, что и файл .pyt.

import arcpy

def func(parameters):
    arcpy.AddMessage("This is where your code goes.")
    return

Ниже приведен пример измененной функции execute в наборе инструментов Python.

def execute(self, parameters, messages):
    """The source code of the tool."""
    import runCode

    runCode.func(parameters)
    return

По окончании изменения кода скопируйте содержимое файла Python обратно в функцию execute этого инструмента.