要在 Microsoft Visual Studio 中调试脚本工具,必须安装 Visual Studio Python 开发工作负载。
有关详细信息,请参阅 Microsoft Learn 站点上的修改 Visual Studio 工作负载、组件和语言包。
在 ArcGIS Pro 中调试 Python 代码
要在 ArcGIS Pro 中开始调试 Python 代码,请完成以下步骤:
- 在 ArcGIS Pro 中,在地理处理窗格中打开要调试的工具。
- 启动 Microsoft Visual Studio 并打开要调试的脚本。
对于脚本工具 (.atbx),可能需要一些额外的设置来调试执行代码。 调试 Python 工具箱 (.pyt) 也需要额外的设置。 有关详细信息,请参阅以下部分。
- 在正在调试的脚本顶部的所有导入语句之后插入 arcpy.SetupDebugger() 函数。
- 在 Microsoft Visual Studio 主菜单上单击调试 > 连接到进程。
- 在连接到进程对话框中,单击选择按钮。
- 在选择代码类型对话框中,相继选中调试这些代码类型和 Python,然后单击确定。
您必须选择附加到:Python 代码。 请勿使用默认代码类型自动:托管(v4.6、v4.5、v4.0)代码、Python 代码。
- 在可用进程列表中,单击 ArcGISPro.exe 进程,然后单击附加按钮。
- 根据需要放置断点。
- 运行 ArcGIS Pro 中的工具开始调试。
完成调试后,根据需要从代码中移除 arcpy.SetupDebugger() 调用。
从 ArcGIS Pro 分离集成开发环境 (IDE) 后,Python 代码中的异常将无法正确显示。 要解决此问题,请重新启动 ArcGIS Pro。
有关在 Visual Studio 中调试 Python 代码的详细信息,请参阅 Microsoft Learn 站点中的在 Visual Studio 中调试 Python 代码。
注:
Microsoft Visual Studio 2017 可用于调试 ArcGIS Pro 2.1 及更高版本。 这些应用程序的早期版本不受支持。 Microsoft Visual Studio 2022 及更高版本使用不同的 Python 调试程序,并且调试 ArcGIS Pro Python 脚本时需要添加 arcpy.SetupDebugger() 函数。
调试脚本工具执行代码
当嵌入脚本工具的执行代码时,必须先从工具箱导出脚本,然后才能进行调试。
要调试脚本工具的执行代码,请完成以下步骤:
- 打开脚本工具属性对话框,然后单击执行选项卡。
- 如果已嵌入执行脚本,请单击将脚本导出至文件按钮。
- 在导入后添加 arcpy.SetupDebugger() 调用。
- 继续处理导出的 .py 文件。
调试脚本工具验证代码
当脚本工具验证中的 Python 代码嵌入到工具中时,必须首先将代码复制到外部 Python 文件 (.py) 以对其进行调试。 然后可以打开 IDE 中的 Python 文件并设置断点,将 IDE 附加到 ArcGIS Pro,之后运行脚本工具。 完成代码修改后,将 Python 文件内容复制回工具验证。
要调试脚本工具验证代码,请完成以下步骤:
- 打开脚本工具属性对话框,然后单击验证选项卡。
- 将代码复制到 .py 文件中(在本例中为 validate_code.py)。
- 在 .py 文件中,在导入后添加 arcpy.SetupDebugger() 调用。
- 将验证选项卡上的代码替换为以下示例代码:
- 继续使用 validate_code.py 文件进行调试。
- 完成调试后,将工具属性对话框验证选项卡上的代码编辑器的内容替换为 .py 文件的内容(示例代码中的 validate_code.py),然后移除 arcpy.SetupDebugger()。
在以下示例中,validate_code.py(内容未显示)包含 ToolValidator 类,并以工具箱形式保存到相同的目录中。 将下面的代码段放到工具属性对话框“验证”选项卡的代码编辑器中,以便将调试中继到 validate_code.py。
import os
import sys
sys.path.append(os.getcwd()) # Ensure directory containing module is in Python path
import validation_code
# The following code will reload the val.py module if it's modified
if 'validation_code' in sys.modules:
import importlib
importlib.reload(validation_code)
# ToolValidator should exist at the global scope
ToolValidator = validation_code.ToolValidator
当用户与工具进行交互时,会反复执行脚本工具验证中的验证代码。
调试 Python 工具箱
无法直接调试 Python 工具箱 (.pyt),必须使用 .py 文件进行调试。
要调试 Python 工具箱,请完成以下步骤:
- 在与 Python 工具箱相同的目录中创建外部 .py 文件(在此示例中为 execute_code.py)。
- 将 Python 工具箱 execute 函数中的代码复制到新 Python 文件中的函数 (func),并复制所有其他必要函数。
- 将 Python 工具箱 execute 方法中的代码替换为以下内容:
- 使用 execute_code.py 文件继续进行调试。
- 完成调试后,将 func 的内容从 Python 文件(在示例中为 execute_code.py)复制回工具的 execute 函数。
以下是 execute_code.py 的内容示例,它与 .pyt 文件保存在同一目录中。
import arcpy
def func(parameters):
arcpy.AddMessage("This is where your code goes.")
return
下面的代码是 Python 工具箱中修改的 execute 函数示例。
arcpy.SetupDebugger()
import execute_code
execute_code.func(parameters)