Sphinx项目modules.rst修改后make html不生效问题求助
Sphinx修改modules.rst后make html不生效的解决办法
问题概述
用Sphinx quickstart创建项目时出了问题,生成的modules.rst模块索引嵌套层级太深。我手动把文件改成了预期的样子:
原modules.rst内容:
parent_directory ======= .. toctree:: :maxdepth: 2 my_package
修改后的modules.rst内容:
my_package ======= .. toctree:: :maxdepth: 2 module1 module2
但重新执行make html之后,Sphinx完全没反应,修改根本没生效。我的项目目录结构是这样的:
- my_package
- _build
- _static
- _templates
- init.py
- module1.py
- module2.py
- conf.py
- modules.rst
- index.rst
- my_package.rst
可行的解决步骤
1. 清理构建缓存
Sphinx会缓存已处理的文件,先清理缓存再重新构建即可:
make clean make html
也可以手动删除_build目录下的所有文件,再执行make html,效果一致。
2. 检查文件引用关系
- 确认
index.rst里是否正确引用了modules.rst,比如toctree配置中要包含modules:.. toctree:: :maxdepth: 2 :caption: 目录 modules - 排查
my_package.rst是否被其他文件重复引用,导致你的修改被覆盖。
3. 确保Sphinx能找到目标模块
打开conf.py,检查sys.path配置是否正确,保证Sphinx可以定位到module1.py和module2.py:
import os import sys sys.path.insert(0, os.path.abspath('.'))
4. 排查自动生成脚本的覆盖问题
如果项目使用sphinx-apidoc自动生成rst文件,每次执行该命令都会覆盖手动修改的modules.rst。这种情况下,要么停止执行sphinx-apidoc,要么修改自动生成的模板,或者每次生成后再手动调整modules.rst。
内容的提问来源于stack exchange,提问作者ebob
相关产品推荐
相关产品推荐

