如何阻止Sphinx autodoc将类和方法加入目录?
解决Sphinx 6.1中autodoc内容自动加入目录的问题
全局配置方案
在Sphinx配置文件conf.py中添加对应配置,即可全局控制autodoc生成的类、方法等不加入目录:
方案1:全局启用noindex
直接通过autodoc_default_options给所有autodoc指令默认加上:noindex:选项,阻止内容被索引及加入目录:
autodoc_default_options = { 'noindex': True, }
方案2:禁用对象条目自动加入目录
如果不想完全禁用索引,仅需阻止autodoc生成的对象出现在目录中,可使用Sphinx 4.0+新增的toc_object_entries配置:
# 禁止自动生成的类、方法等对象条目出现在目录树 toc_object_entries = False
这个配置能精准解决你遇到的“类和方法消失后成员反而出现在目录”的问题。
方案3:自定义autodoc模板
若以上方案不满足需求,可自定义autodoc模板移除目录条目逻辑:
- 从Sphinx的autodoc模块复制默认模板(如
class.rst、method.rst)到项目_templates/autodoc/目录 - 修改模板,删除用于生成目录条目的相关标记(通常是
:tocentry:相关内容)
生效验证
配置完成后,执行以下命令重新生成文档:
make clean && make html
此时autodoc生成的类、方法及其成员都不会出现在目录中,同时类型提示可正常显示。
内容的提问来源于stack exchange,提问作者user2302957
相关产品推荐
相关产品推荐

