Sphinx apidoc-不显示软件包和模块的完整路径

问题描述 投票:15回答:1

我对狮身人面像很陌生,我正在尝试将其用作我的项目的API参考。也许之后也可以作为项目文档。

我使用这两个命令生成它

sphinx-apidoc -e -o doc/api tracer
sphinx-build -b dirhtml doc/ build/doc/dirhtml

存在产生此目录的问题

- tracer package
    - tracer.lang package
        - tracer.lang.en module
    - tracer.packageManagers package
        - tracer.packageManagers.dnf module
        - tracer.packageManagers.dpkg module
        - tracer.packageManagers.portage module
        - ...
    - tracer.resources package
        - tracer.resources.ProcessesList module
        - tracer.resources.applications module
        - tracer.resources.args_parser module
        - ...

这是不必要的冗余信息的清单原因非常不清楚。这样会更好:

- tracer package
    - lang package
        - en module
    - packageManagers package
        - dnf module
        - dpkg module
        - portage module
        - ...
    - resources package
        - ProcessesList module
        - applications module
        - args_parser module
        - ...

甚至可能没有结尾的packagemodule标签甚至更好。

无论如何,它在任何地方看起来都不太好。例如

class tracer.packageManagers.portage.Portage
    Bases: tracer.packageManagers.ipackageManager.IPackageManager

会好得多

class Portage
    Bases: IPackageManager

我知道全名可能在大型项目中比较好,在大型项目中,模块名称可以具有相同的名称,但是在我的小型项目中我不喜欢全名。我可以以某种方式告诉apidoc生成短名称吗?

您能帮我吗?

非常感谢,FrostyX

python python-sphinx
1个回答
13
投票

就目录而言,对所有* .rst文件(在运行sphinx-apidoc之后)在源文件夹中进行搜索/替换是最终对我有用的方法。

搜索:

^(?:[a-zA-Z0-9]*[.])*([a-zA-Z0-9]+) (package|module)

替换:

\1 \2

...这会缩短标题,即标题树中显示的标题。唯一的结果就是该模块页面上的标题也将是简称,但这并没有让我感到困扰,因为导航和目​​录仍然清楚地表明了父包是什么。

根据类/函数名称,mzjin对问题的评论:

在conf.py中设置add_module_names = False

应该做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.