我可以使用 Sphinx automodule 但在签名中删除模块名称吗?

Can I use Sphinx automodule but drop the module name in the signature?

我有一个模块 mod 和一些子模块 submod 并使用 .. automodule:: mod.submod 为它生成文档。

模块中元素(函数、类 等)的签名现在显示限定名称,例如 mod.submod.my_function(*args, **kwargs)

我希望 Sphinx 只显示函数的名称,即签名 my_function(*args, **kwargs).

我有什么办法可以删除签名中的前导模块和子模块吗?

是的,在 docs/mod/submod.rst 中试试这个:

.. automodule:: mod.submod

    .. autofunction:: my_function

请参阅金字塔文档中的示例 HTML build and reST source

奖励:请参阅 Cross-referencing syntax 的 Sphinx 文档:

If you prefix the content with ~, the link text will only be the last component of the target. For example, :py:meth:~Queue.Queue.get will refer to Queue.Queue.get but only display get as the link text.

通过在 conf.py:

中设置 add_module_name configuration 来省略函数、方法和变量之前的模块和包名称
add_module_names = False

这并不明显,因为众多 autodoc configurations that together with the sphinx-napoleon configurations 让您期待其他地方的配置。