xlwings - 在 pydev eclipse 中远程调试 udf

xlwings - remote debugging udf in pydev eclipse

我想在与 excel 相同的主机上调试 pydev 中的 python udf 代码。 我查看了 official doc 但无法理解这个概念或让它发挥作用。 根据文档,我将这些行放在我的 udfs 模块的末尾:

if __name__ == '__main__':
    xw.serve()

文档还说:

Depending on which IDE you use, you might want to run things in “debug” mode (e.g. in case your using PyCharm or PyDev):

我不明白上面的“运行 things”是什么意思。

此外,根据远程调试的 pydev 说明,必须在 Eclipse 中使用以下菜单按钮之一:

  1. 附加到进程
  2. Pydev 调试服务器

并添加此代码:

import pydevd
pydevd.settrace()

我很困惑在 pydev 中远程调试从 excel 发出的 udf 调用需要遵循哪些所有步骤。谁能分享一下udf & pydev调试的步骤吗?

Pydev 是 win 64 位,excel 是 2007(32 位)。

使用 xlwings,您不需要任何远程调试或附加到 运行ning 进程,因此无需引入任何新代码,如 settrace()。事实上,好的事情是标准调试在 xlwings 和任何 IDE 中开箱即用。

您需要在 VBA 设置中设置 UDF_DEBUG_SERVER = True。然后,当您重新计算 Excel 电子表格时,公式会给您一个错误。

这意味着您现在需要 运行 末尾包含此内容的 Python 文件:

if __name__ == '__main__':
    xw.serve()

这些行启动 COM 服务器。在 Eclipse 中,如果您只是点击 Run > Run last launched,它将正常工作,即当您再次重新计算 UDF 时,您将在 PyDev 的控制台中看到代码的任何输出(如打印命令)。

但是,要使代码在断点处停止,您需要select Run > Debug Last Launched