调试 Python 代码

Python 用于 ArcGIS Pro 应用程序的很多部分。集成开发环境 (IDE) 是为代码程序员提供编辑和调试功能的应用程序。IDE 有助于提高代码编写和故障排除的简易性和高效性。Python IDE 可用于制作和故障排除脚本工具以及 Python 工具箱验证和执行代码。

IDE

Microsoft Visual Studio IDE

调试方法附加到正在运行的过程

支持的 ArcGIS Pro 组件

  • 脚本工具执行
  • 脚本工具验证
  • Python 工具箱

其他资源

https://docs.microsoft.com/en-us/visualstudio/python/debugging

必须安装以下 Visual Studio Workload:Python 开发。请参阅 https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio

要在 ArcGIS Pro 中调试 Python 代码,请从以下步骤入手:

  1. 启动 Microsoft Visual Studio。
  2. 在主菜单上单击调试 > 连接到进程
  3. 连接到进程对话框中,单击选择按钮。
  4. 选择代码类型对话框中,相继选中调试这些代码类型Python,然后单击确定
    注:

    您必须选择附加到:Python 代码。请勿使用默认代码类型自动:托管(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 专业版

调试方法Python 调试服务器

支持的 ArcGIS Pro 组件

  • 脚本工具执行
  • 脚本工具验证

其他资源

https://www.jetbrains.com/help/pycharm/remote-debugging-with-product.html

pdb 模块

pdb 模块是 Python 标准库的一部分。该模块并非完全开发的 IDE,但可用于交互式源代码调试。

调试方法交互式(在硬编码断点处)

支持的 ArcGIS Pro 组件

  • 脚本工具执行(仅来自独立的 Python 脚本)

其他资源

https://docs.python.org/3/library/pdb.html

使用 pdb 模块可用于调试正在独立 Python 脚本中运行的脚本工具执行代码。向脚本工具代码中添加断点(使用 import pdb;pdb.set_trace()),然后运行调用该脚本工具的 Python 脚本。在遇到断点时,Python 会进入交互模式。请记住在调试工作完成时移除断点代码。

调试脚本工具验证代码

IDE 只能调试 Python 文件 (.py)。对于脚本工具验证中的 Python 代码(嵌入到工具箱中),将代码复制到外部 Python 文件,并将 Python 工具箱中的代码替换为以下示例。然后可以打开 IDE 中的 Python 文件并设置断点,将 IDE 附加到 ArcGIS Pro,之后运行脚本工具。完成代码修改后,将 Python 文件内容复制回工具验证。

在以下示例中,val.py 包含 ToolValidator 类,并以 .tbx 文件形式保存到相同的目录中。

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 工具箱中的代码替换为以下示例。然后可以打开 IDE 中的 Python 文件并设置断点,将 IDE 附加到 ArcGIS Pro,之后使用 Python 工具箱。完成代码修改后,将 Python 文件内容复制回 Python 工具箱。

在以下示例中,pyt_code.py 包含 Python 工具箱中常见的代码,并与 .pyt 文件保存到相同的目录中。

from pyt_code import *

加载工具并与其进行交互时,会多次执行 Python 工具箱中的代码。