【金蝶二开案例.Python插件.debug调试成功】中间碰见挺多坑,在这里做个总结

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:2

【金蝶二开案例.Python插件.debug调试成功】中间碰见挺多坑,在这里做个总结

@[TOC](【金蝶二开案例.Python插件.debug调试成功】中间碰见挺多坑,在这里做个总结)
社区上关于Python代码调试的文章不多,而且都是比较旧的版本,按以下几个教程基本都不怎么能够顺利进入断点,在这里结合我在断>点调试过程中碰见的坑做个总结吧。
【保姆级】Python插件也可以调试了:https://wenku.my7c.com/article/583031196427458048?productLineId=1&lang=zh-CN 【官方案例】官方案例快递100及快递管家编写并调试简单的Python插件:https://wenku.my7c.com/article/469226787164054272?productLineId=1&isKnowledge=2&lang=zh-CN ## 1. 有说新版不支持python断点了,其实是支持的,只是按照官方之前的步骤操作在注册时会提示错误,调试脚本换种写法就可以了 ![企业微信截图_17216356407759.webp](/download/0100a0050f651a1540e3b239361f63d424c8.webp) ![企业微信截图_17216359887891.webp](/download/0100c6d959eeaa3c430bbf533928aeaf64e7.webp) ## 2. 调试脚本代码(换另一个种写法)感谢@齐111大佬的耐心指导 ```python # 将官方这几行代码注释掉 # g = globals() # for v in ("this",): # scope.SetVariable(v, g[v]) # 替换成这种写法方案,即可正常注册 scope.SetVariable("this", this) ``` ## 3. 除此之外还有以下特别注意的点 ,可能会碰到的问题 ### 3.1 执行操作报错 这个文件是字符编码编译问题 ```python Non-ASCII character '\xd6' in file D:\WorkSpace\TXQM\Python_debug\debug_test\debug_test.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details ``` #### 3.1.1 解决方案 ```python 在代码最最前面加上这行即可 指定字符集即可 #-*- encoding:utf-8 -*- ``` 参考:https://www.jianshu.com/p/d6db7eb05543 ## 4. 完整调试代码 ```python # -*- encoding:utf-8 -*- import clr clr.AddReference("IronPython") from IronPython.Hosting import Python def wrap_d(f): func_name = f.__name__ del f def wrapper(e): engine = Python.CreateEngine({"Debug": True}) scope = engine.CreateScope() this.View.ShowWarnningMessage("进调试文件了!!") # 由于安全原因,不支持'globals'调用? 8.0 已经不支持此方式断点调试 # g = globals() # for v in ("this",): # scope.SetVariable(v, g[v]) # 替换方案 scope.SetVariable("this", this) # 调试文件入口 engine.CreateScriptSourceFromFile( "D:\WorkSpace\TXQM\test\Code\erp_query_sql\erp_query_sql.py" ).Execute(scope) return getattr(scope, func_name)(e) return wrapper # 需要调试的方法均需要列在下面 @wrap_d def BarItemClick(e): pass @wrap_d def DataChanged(e): pass # 调试执行入库 指定以上路径Py文件中需要调试的方法 @wrap_d def AfterEntryBarItemClick(e): pass ``` ## debug调试成功进入断点,这样就可以愉快的写代码了 ![企业微信截图_17217283282857.webp](/download/01005db9e05e9fdc490abe4e2e1e9baa84e1.webp)

【金蝶二开案例.Python插件.debug调试成功】中间碰见挺多坑,在这里做个总结

@[TOC](【金蝶二开案例.Python插件.debug调试成功】中间碰见挺多坑,在这里做个总结)社区上关于Python代码调试的文章不多,而且都是比较旧...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息