Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 交叉引用链接到不同子模块中的函数/类_Python_Python Sphinx_Cross Reference - Fatal编程技术网

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`
'''