交叉引用 link 到不同子模块中的 function/class

cross-refence link to a function/class in a different submodule

作为一个简单的例子,在以下2个子模块的代码中(a.pyb.py在同一目录中)。 link 对同一个子模块函数 :func:`hook` 有效,但对不同模块的 link 交叉引用无效,即 :func:`foo`。我还尝试了 :func:`.a.foo` 的语法 - 仍然不起作用。如何交叉引用 a.foo()

# script a.py
def foo():
    '''foo func'''

# script b.py
def hook():
    '''hook func'''

def spam():
    '''spam func.
    :func:`foo`
    :func:`hook`
'''

docs所述:

Normally, names in these roles are searched first without any further qualification, then with the current module name prepended, then with the current module and class name (if any) prepended. If you prefix the name with a dot, this order is reversed.

在这种情况下,:func:`.a.foo` 表示模块 b 内名为 a 的对象。它将寻找 b.a.foo 函数。

您应该尝试 :func:`..a.foo`,它将指向 b..a.foo,或者只是 a.foo(现在无法在本地检查,抱歉;但我记得我以前使用过该语法) .

但是请注意,a.pyb.py 应该是模块,即可以在它们的名称下导入。如果它们只是脚本,并且不在包中(没有 __init__.py 文件到项目的根目录),则无法与这些角色交叉引用。

您可以尝试使用 :any: 角色 — :any:`foo` — 希望它能在所描述对象的通用索引中找到该对象。