在Sphinx中交叉引用Python对象有什么要求?

在Sphinx中交叉引用Python对象有什么要求?,python,python-sphinx,autodoc,cross-reference,Python,Python Sphinx,Autodoc,Cross Reference,我正在使用:class:,并收到很多警告 警告:未找到py:class引用目标:mypkg.submodule.class 我在文档中找不到正确交叉引用的具体要求 这是一份不完整的需求清单,我认为有: 对象的模块需要是可导入的 对象需要存在于模块内部 需要使用:py:class:、:py:func::或类似指令在生成中的其他位置记录该对象 此指令可以由autodoc扩展生成,在这种情况下,对象需要有一个与之关联的docstring 对于要交叉引用的内容,必须首先声明它 Python域(名

我正在使用
:class:
,并收到很多警告

警告:未找到py:class引用目标:mypkg.submodule.class

我在文档中找不到正确交叉引用的具体要求

这是一份不完整的需求清单,我认为有:

  • 对象的模块需要是可导入的
  • 对象需要存在于模块内部
  • 需要使用
    :py:class:
    :py:func::
    或类似指令在生成中的其他位置记录该对象
    • 此指令可以由
      autodoc
      扩展生成,在这种情况下,对象需要有一个与之关联的docstring

对于要交叉引用的内容,必须首先声明它

Python域(名称py)为模块提供以下指令:

有两种情况需要考虑:

  • 。域:指令名称:
    )和
  • :域:角色名称:
您指定的
:class:
的情况实际上是编写角色
:py:class:
的缩写语法,不要与指令声明混为一谈。。py:class::

此指令可以由autodoc扩展生成,在这种情况下,对象需要有一个与之关联的docstring

指令声明由autodoc隐式完成,但对于没有由autodoc声明的DocString的对象,必须使用

没有docstring的成员将被忽略,除非您提供undoc成员标志选项:

.. automodule:: noodle    
   :members:    
   :undoc-members: 

声明对象的一个效果是将其插入索引中。因此,您可以检查索引以确保它已被声明和插入。(但是请注意,索引中没有插入这些链接。)

@RobinDeSchepper默认情况下,在主页上(通常是index.html,对应于index.rst)有一个名为index的链接,Sphinx会自动为您生成和管理该链接。