我在Python中创建了一个自定义扩展命令。我安装了它,但正如预期的那样我得到错误(引用SPSS日志输出 - 我知道在SPSS中调试Python程序的唯一方法):
Extension command TEST_EXTENSION could not be loaded. The module or a module that it requires may be missing, or there may be syntax errors in it.
错误可能来自.xml
或Run(args)
函数。我正在实施的CustomFunction()
已经过彻底测试。
调试这个以及其他潜在错误的好习惯是什么?官方IBM-SPSS-Statistics-Extension-Command对
说设置 SPSS_EXTENSIONS_RAISE 环境变量为" true"
但我不知道如何做到这一点,无论错误的来源如何,这都不会有效。
答案 0 :(得分:1)
@horace
您可以通过控制面板>在Windows上设置环境变量。系统>高级系统设置>环境变量。确切的措辞因Windows版本的不同而异。我通常选择系统变量,尽管通常都可以使用。之后需要重启Statistics。设置此变量后,Python代码中的错误将产生回溯。回溯通常被抑制,因为它对用户没用,但它对开发人员非常有帮助。
只有Python代码中的错误才会出现回溯。 "无法加载"您报告的错误发生在Python获得控制之前,因此不会产生回溯。导致此错误的原因有两个。第一个是统计信息找不到定义扩展命令或相应Python模块的xml文件。扩展命令定义在统计信息启动时或通过运行EXTENSION命令加载。执行SHOW EXT。从语法编辑器中查看Statistics查找扩展文件的位置。
第二个原因是Python代码中的语法错误。运行
开始计划。
导入你的模块
结束计划。
查看是否有任何错误报告。
更一般地说,有两种有用的调试策略。第一种是在外部模式下运行代码,从中运行Python代码。这样您就可以使用IDE或普通的Python调试器逐步完成代码。有关详细信息,请参阅可编程性文档。在外部模式下可以做些什么有一些限制,但它通常是一个很好的解决方案。
第二种是使用支持远程调试的IDE。我使用Wing IDE,但还有其他IDE可以做到这一点。这让我可以从Statistics内部跳转到调试器,逐步执行Python代码,并在调试器中执行所需的所有其他操作。
HTH