gpt4 book ai didi

python - 当 epydoc 加载我的代码时,如何从 epydoc 获取堆栈跟踪?

转载 作者:行者123 更新时间:2023-12-01 06:18:02 26 4
gpt4 key购买 nike

当我将代码加载到 epydoc 并仅加载顶部模块时,它会失败:

Error: TypeError: 'NoneType' object is not callable (line 10)

它所引用的 NoneType 是我尝试在第 9 行加载的子模块。如何让 epydoc 解释为什么它无法在第 9 行加载模块只是埋头苦干却犯了错误?

根据诺斯科的要求。这是类似的示例,其中没有给出堆栈跟踪:

# foo.py
import bar
bar.baz()

# bar.py

def baz():
print 'baz'

import os
os.environ['DOES_NOT_EXIST']

运行方式:

python2.6 epydoc --html foo.py

产生不太有用的内容:

    +--------------------------------------    | In /home/ross/foo.py:    | Import failed (but source code parsing was successful).    |     Error: KeyError: 'DOES_NOT_EXIST' (line 1)
我希望 epydoc 告诉我失败发生在 bar.py 的第 6 行。我不希望它提示 foo.py 导入 bar.py。我无法在一个小示例中重现我的 特定问题,但我的基本要求是,当 epydoc 失败时,我希望它打印堆栈跟踪以指出问题。无论是加载子模块还是调用字典中找不到key。

注意:这个问题的根源是我试图记录的代码是 SCons 的输入,它具有不同的环境设置问题。这就是为什么当我在 epydoc 中运行时它不起作用,但在使用 scons -f SConstruct.py 运行时脚本仍然有效。我还尝试使用 sphinx 生成文档。当我使用 sphinx 运行时,它实际上显示了堆栈跟踪。也许我会选择sphinx...

最佳答案

所以,如果我理解正确的话,您正在运行 epydoc 的模块会导入一个有错误的模块(不是您想要为其生成文档的模块)?

如果您需要完成的只是查看文件中出现错误的行以便进行调试,您也可以传入此文件,并且将列出发生错误的行号 该模块。

所以,运行:

epydoc --check foo.py bar.py

将输出:

+------------------------------------------------------------------------------------------------------------
| In /home/mark/Desktop/foo.py:
| Import failed (but source code parsing was successful).
| Error: KeyError: 'DOES_NOT_EXIST' (line 2)
|
+------------------------------------------------------------------------------------------------------------
| In /home/mark/Desktop/bar.py:
| Import failed (but source code parsing was successful).
| Error: KeyError: 'DOES_NOT_EXIST' (line 7)
|

由于还分析了 Bar.py,因此列出了该文件中发生错误的行号。

现在,如果您正在寻找更强大的解决方案,因为这是您需要处理的常见问题,那么您将不得不开始破解epydoc内部结构。我自己也这样做过,所以我建议你尽可能避免掉进这个兔子洞。如果可以选择切换到 Sphinx,我会推荐这条路线。

关于python - 当 epydoc 加载我的代码时,如何从 epydoc 获取堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2121268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com