【问题标题】:Exception while using Sphinx to document script with command line arguments使用 Sphinx 记录带有命令行参数的脚本时出现异常
【发布时间】:2012-05-08 08:12:43
【问题描述】:

有什么方法可以使用 Sphinx 来记录 python 脚本的命令行输入?我能够记录函数或方法的输入,但我不知道如何记录脚本的输入。我一直在尝试通过在源文件中添加 .. automodule:: scriptLDOnServer 行来遵循我用于函数的相同语法,其中 scriptLDOnServer 是我的 python 脚本(对应于我的主脚本)。

问题是我收到这样的错误:

__import__(self.modname)
File "/home/ubuntu/SVNBioinfo/trunk/Code/LD/scriptLDOnServer.py", line 10, in <module>
    genotype_filename=sys.argv[7];
IndexError: list index out of range

Sphinx 似乎正在尝试获取命令行输入,但在我的源文件中没有输入,因此导入失败。有没有办法解决这个问题?我应该在源代码中为脚本而不是模块使用另一个命令吗?

对不起,不是很清楚,但很难解释这个问题。

【问题讨论】:

    标签: python python-sphinx


    【解决方案1】:

    导入文件时失败,因为您试图在导入时访问sys.argv[7]。这不是你应该做的事情。此类可能失败的代码应该放在if __name__ == '__main__': 块或函数中,这样在导入代码时就不会执行。

    这通常成立。您永远不应该*编写无法导入的代码或具有被导入的任何副作用的代码。

    * 适用条件。但是你最好在打破这个规则之前有很好的理由。

    【讨论】:

    • 感谢您的回答,我不知道主要功能必须包含在这些标签中
    • 另一个说明为什么导入应该是安全的情况是help('modules');它会查找可以导入的所有内容并将其导入。如果你有什么东西会导致崩溃或退出(少数人会这样做——这通常是一个错误),它会破坏它。
    • 如何评论模块的输入参数,我尝试使用与函数相同的语法 (:param name_parameter:) 但它似乎无法识别模块输入参数 (argv)。记录这些参数的最佳方式是什么?
    • @Rossella:你的模块不应该依赖于 sys.argv,除非它是一个入口点。如果是,请使用command-line program markup
    • 这是一个入口点,这正是我想要的,非常感谢
    猜你喜欢
    • 2012-06-08
    • 2016-12-21
    • 2015-12-17
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多