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

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

Различные IDE

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. Запустите Microsoft Visual Studio.
  2. Щелкните в главном меню Отладка > Присоединение к процессу.
  3. В диалоговом окне Присоединение к процессу dialog щелкните кнопку Выбрать.
  4. В диалоговом окне Выбрать тип кода поставьте отметку Отладка этих типов кода, отметьте Python и нажмите OK.
    Примечание:

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

  5. Щелкните в списке доступных процесс ArcGISPro.exe и нажмите на кнопку Присоединить.

После отключения 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 перейдет в интерактивный режим. Не забудьте удалить код точки разрыва после окончания отладки.

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

IDE может отлаживать только файлы Python (.py). Для проверки кода Python в инструменте-скрипте (встроенном в набор инструментов) необходимо скопировать код во внешний файл Python и заменить код в наборе инструментов Python, как показан в примере ниже. Теперь вы можете открыть файл 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

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

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

from pyt_code import *

Код в наборе инструментов Python выполняется несколько раз по мере загрузки инструментов и взаимодействия с ними.