代码之家  ›  专栏  ›  技术社区  ›  Ross Rogers

当epydoc加载我的代码时,如何从中获取stacktrace?

  •  1
  • Ross Rogers  · 技术社区  · 16 年前

    当我将代码加载到 epydoc 只需加载失败的顶部模块:

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

    在哪里 NoneType 它所指的是我试图加载到第9行的一个子模块。我怎样才能让epydoc解释为什么它不能将模块加载到第9行,而不只是向前推进并遇到错误?

    按照Nosko的要求。下面是类似的例子,其中没有给出堆栈跟踪:

    # 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 . 我不想抱怨 foo.py 的进口 巴.py . 我不能复制我的 具体的 在一个小例子中出现了问题,但我的基本要求是,当epydoc失败时,我希望它打印一个堆栈跟踪来指向该问题。无论它是加载子模块还是调用,都不会在字典中找到键。

    注意:这个问题的根源是我试图记录的代码是对具有不同环境设置问题的scons的输入。所以当我跑进去的时候 埃皮多克 它不起作用,但在运行时脚本仍然起作用 scons -f SConstruct.py . 我还尝试生成文档 sphinx . 当我和你一起跑步 狮身人面像 它实际上显示了堆栈跟踪。也许我会一起去 狮身人面像 ……

    1 回复  |  直到 16 年前
        1
  •  2
  •   Mark Roddy    16 年前

    所以,如果我理解正确的话,运行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,因此列出了此文件中发生错误的行号。

    现在,如果您正在寻找一个更强大的解决方案,因为这是您需要处理的一个常见问题,那么您将不得不开始对 埃皮多克 内构件。我自己也这么做了,如果可以的话,我建议你不要跑进这个兔子洞。如果切换到 狮身人面像 是一种选择,我推荐这条路线。

    推荐文章