You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:42:31