2017-10-07 71 views
2

作为一个简单示例,在以下2个子模块(相同目录中的a.pyb.py)的代码中。到相同子模块功能:func:`hook`的链接工作,但不链接到不同模块的交叉引用,即: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` 
''' 
+0

我觉得你很亲密。尝试摆弄Python虚线路径。也许':func:\'a.foo \''或':func:\'parent.a.foo \''? –

回答

1

docs描述:

通常,在这些角色名称首先搜索而无需任何进一步 资格,然后用前置当前模块的名称,然后用 当前模块和类名称(如果有)前置。如果用点号加 的名称,则此顺序相反。

在这种情况下,装置:func:`.a.foo`名为a模块b的内部的物体。它会寻找b.a.foo函数。

你应该尝试:func:`..a.foo`,这将指向b..a.foo,或者只是a.foo(不能检查本地现在,对不起,但我记得我是用这种语法之前)。

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

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