Python 交叉引用链接到不同子模块中的函数/类
作为一个简单的例子,在下面的代码中有两个子模块(Python 交叉引用链接到不同子模块中的函数/类,python,python-sphinx,cross-reference,Python,Python Sphinx,Cross Reference,作为一个简单的例子,在下面的代码中有两个子模块(a.py和b.py,在同一目录中)。指向同一子模块函数的链接:func:`hook`起作用,但与不同模块的链接交叉引用不起作用,即:func:`foo`。我还尝试了:func:`.a.foo`的语法-仍然不起作用。如何交叉引用a.foo() 如以下文件所述: 通常,首先搜索这些角色中的名称,而不进行任何进一步的搜索 限定,然后在前面加上当前模块名,然后加上 当前模块和类名(如果有)已加前缀。如果你加前缀 带点的名称,顺序相反 在这种情况下,:fun
a.py
和b.py
,在同一目录中)。指向同一子模块函数的链接:func:`hook`
起作用,但与不同模块的链接交叉引用不起作用,即:func:`foo`
。我还尝试了:func:`.a.foo`
的语法-仍然不起作用。如何交叉引用a.foo()
如以下文件所述:
通常,首先搜索这些角色中的名称,而不进行任何进一步的搜索
限定,然后在前面加上当前模块名,然后加上
当前模块和类名(如果有)已加前缀。如果你加前缀
带点的名称,顺序相反
在这种情况下,:func:`.a.foo`
表示模块b
内部名为a
的对象。它将查找b.a.foo
函数
您应该尝试:func:`..a.foo`
,它将指向b..a.foo
,或者只是a.foo
(抱歉,现在无法在本地检查该语法;但我记得我以前使用过该语法)
但是请注意,a.py
和b.py
应该是模块,即在其名称下可导入。如果它们只是脚本,并且不在包中(项目根目录下没有\uuuu init\uuuu.py
文件),则无法与这些角色交叉引用
您可以尝试使用role-
:any:`foo`
,并希望它能在所描述对象的常规索引中找到该对象。我想您已经接近了。尝试摆弄Python虚线路径。可能是:func:`a.foo`
或:func:`parent.a.foo`
?
# script a.py
def foo():
'''foo func'''
# script b.py
def hook():
'''hook func'''
def spam():
'''spam func.
:func:`foo`
:func:`hook`
'''