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 中使用以下菜单按钮之一:
- 附加到进程
- 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
。
我想在与 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 中使用以下菜单按钮之一:
- 附加到进程
- 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
。