Sphinx todo扩展无法识别Python文档字符串中的todo项问题求助
嘿,我之前也碰到过一模一样的问题!能在index.rst里识别todo说明扩展本身是启用的,问题大概率出在自动文档生成(autodoc)的配置或者docstring里的标记格式上,给你几个排查方向:
确保autodoc扩展已启用且正确配置
Sphinx要提取Python代码里的docstring,必须依赖sphinx.ext.autodoc扩展。先检查你的conf.py里的extensions列表是不是同时包含了:extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.todo', ]而且要保证
todo_include_todos = True(这个你可能已经设了,但再确认一遍,毕竟有时候会漏写)。检查docstring里的
.. todo::格式
你的docstring里的todo项缩进和段落结构可能有问题!看你的代码,.. todo::紧跟在参数说明后面,还嵌套在了前面::开头的代码块语境里,这会让Sphinx把它当成字面文本而非reStructuredText标记。调整成这种格式试试:""" 该对象的构造方法。第一行是简要说明,可补充更详细的内容,例如讨论其方法。此处唯一的方法是:func:`function1`。核心目的是通过**参数**、**类型**、**返回值**和**返回类型**来记录类和方法的参数。 :param name: 该对象所有者的名称 :type name: str :return: None .. todo:: 源代码中的待办事项。 """把参数说明和todo项拆成独立段落,保持缩进一致,避免让todo嵌套在代码块语境里。
确认构建命令的参数
有时候即使配置里设了todo_include_todos,如果构建时用了-W这类严格参数,可能会干扰todo的渲染。试试用基础命令sphinx-build -b html source build重新构建,看看会不会显示todo项。检查Sphinx版本兼容性
某些旧版本的Sphinx中,autodoc对docstring里reST标记的解析存在bug。如果你的Sphinx版本比较老,试着升级到最新稳定版,说不定能解决问题。
内容的提问来源于stack exchange,提问作者Paul D Smith

