OptionParser与Sphinx冲突吗?

13 投票
2 回答
3213 浏览
提问于 2025-04-16 22:43

我正在为我的项目写文档,使用的是Sphinx工具。每当Sphinx在我的模块中遇到OptionParser时,就会报错:

sphinx-build: 错误:没有这样的选项: -b

我觉得这不可能,所以我写了一个简单的模块来检查这个问题:

from optparse import OptionParser

"""some comment here"""

parser = OptionParser(conflict_handler='resolve')
parser.add_option('', '--force', action='store_true', dest='force', default=False, help='gqdel will skip asking questions, and delete them all.');
parser.add_option('', '--verbose', action='store_true', dest='verbose', default=False, help='Report additional information from gqdel')

(options, args) = parser.parse_args()

"""and here"""

print "foo"

结果也给我报了同样的错。我的rst文件看起来是这样的:

some title
==========

.. automodule:: test
   :members:

2 个回答

5

这个方法对我有效,把它加在最后面就行。

if __name__ == '__main__':

    parser = optparse.OptionParser()
20

我觉得事情是这样的:

当 Sphinx 运行的时候,autodoc 会导入你的模块,并且模块里的顶层代码会被执行。这时候会创建一个 OptionParser 实例,它会处理传给 sphinx-build 的命令行参数和选项,其中一个选项就是 -b。但是你的 OptionParser 不允许这个选项。

我建议把 OptionParser 的代码放到一个函数里,这样在导入模块的时候就不会被执行了。

撰写回答