OptionParser与Sphinx冲突吗?
我正在为我的项目写文档,使用的是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 的代码放到一个函数里,这样在导入模块的时候就不会被执行了。