如何修改Sphinx模板去除文档树侧边栏的完整路径?
解决Sphinx侧边栏对象树仅显示末尾对象名称的问题
步骤1:修改自定义模块模板
找到你的custom-module-template.rst模板(如果没有,从Sphinx默认模板复制到项目的_templates目录),调整模块标题的名称渲染逻辑:
原模板片段(示例):
{{ fullname | escape | underline}} .. automodule:: {{ fullname }} {% block functions %} {% if functions %} .. rubric:: {{ _('Functions') }} .. autosummary:: :toctree: {% for item in functions %} {{ fullname }}.{{ item }} {% endfor %} {% endif %} {% endblock %}
修改后:
{{ fullname.split('.')[-1] | escape | underline}} .. automodule:: {{ fullname }} {% block functions %} {% if functions %} .. rubric:: {{ _('Functions') }} .. autosummary:: :toctree: {% for item in functions %} {{ fullname }}.{{ item }} {% endfor %} {% endif %} {% endblock %}
通过split('.')[-1]截取fullname的最后一段,只显示模块的短名称。
步骤2:调整autosummary子模板
复制Sphinx默认的autosummary模板文件(module.rst、function.rst)到_templates/autosummary目录,分别修改:
- module.rst:将标题部分的
{{ fullname }}替换为{{ fullname.split('.')[-1] }} - function.rst:直接用
{{ name }}作为标题(name本身就是函数的短名称,无需拼接路径)
步骤3:完善conf.py配置
确保conf.py中保留以下配置:
add_module_names = False autosummary_generate = True autosummary_imported_members = False
autosummary_imported_members = False可避免导入外部模块成员,减少路径冗余。
步骤4:重新构建文档
执行以下命令清除旧构建文件并重新生成:
make clean && make html
完成以上修改后,侧边栏对象树会按照期望结构显示:
├───my_package │ └───my_python_module1 │ └───function_A │ └───my_directory │ └───my_python_module2 │ └───function_B
内容的提问来源于stack exchange,提问作者J.K.
相关产品推荐
相关产品推荐

