为 intersphinx 链接指定到 numpy、 scypy 和 matplotlib 的目标

根据设置 Sphinx 文档在包之间链接的文档,我添加了

intersphinx_mapping = {'python': ('http://docs.python.org/2', None),
'numpy': ('http://docs.scipy.org/doc/numpy/', None),
'scipy': ('http://docs.scipy.org/doc/scipy/reference/', None),
'matplotlib': ('http://matplotlib.sourceforge.net/', None)}

到我的 conf.py,但似乎不能得到除了 Python 本身以外的任何项目的链接

:term:`svg graphics <matplotlib:svg>`

只是把我带到索引页面,没有添加预期的 #term-svg锚,我甚至不能找到 scipy的术语表,也不知道如何确定包支持哪些 :ref::term:

在哪里可以找到关于如何在 numpyscipymatplotlib中为 :ref::term:指定目标的说明?


就此而言,我如何链接到 Sphinx 本身

intersphinx_mapping['sphinx'] = ('http://sphinx-doc.org/', None)

还有

:ref:`Intersphinx <intersphinx>`

没用。

7049 次浏览

可以手动指定要查看哪些库存 如果不能正常工作,你可以下载库存,然后手动将其附加到映射中(例如,从 http://sphinx-doc.org/objects.inv下载,将二进制文件保存到文档中,然后在映射中将路径附加到二进制文件中;

intersphinx_mapping['sphinx'] = ('http://sphinx-doc.org/', ('objects.inv', ), )

要验证库存中是否存在引用,可以使用 [咒语] python 包探索二进制文件,并检查所需的引用位置。

这可能不是解决问题的办法,但可以帮助调试一些东西。

在哪里可以找到关于如何在 numpyscipymatplotlib中为 :ref::term:指定目标的说明?

我有一个 要点与少数 intersphinx映射,现在包括所有的 numpyscipymatplotlib。您应该能够在 intersphinx_mapping中,在 conf.py中直接使用这些条目。如果任何人有建议,进一步的条目将被添加到这个名单,请随时张贴请求到要点的意见。

对于所有这些包,根据 Fgoudra 的回答,我强烈推荐使用 sphobjinvobjects.inv文件中搜索每个库。(完整披露: 我是 sphobjinv的作者。)CLI 接口的 suggest模式专门用于提供组合 intersphinx 交叉引用所需的信息。


numpy很复杂。 有时候你需要一个完全限定的名字,例如:

:func:`numpy.cross`

其他时候(例如,对于 C 函数) ,你可以只引用函数的基本名称,但是你必须明确指出域,例如:

:c:func:`PyArray_InnerProduct`

然而,其他时候你可能不得不引用自定义 np域,例如:

:np:func:`numpy.ma.append`

如果不参考 objects.inv,确实没有办法知道正确的语法是什么。

scipy基本上和 numpy一样神秘莫测。由于为各种 scipy子包引入了大量定制域,事情变得更加复杂,例如:

:scipy-optimize:func:`scipy.integrate.newton_cotes`

对于 matplotlib 似乎总是需要在引用中提供(相当冗长)完全指定的对象名,例如:

:meth:`matplotlib.axes.Axes.plot`

所有的 matplotlib代码对象似乎都驻留在默认的 py域中,但是,这在一定程度上简化了事情。

对于其中的任何一个, 如果你在获得一个正确构造的链接时遇到困难,我首先回过头来使用通用的 :obj:角色,例如:

:obj:`matplotlib.axes.Axes.plot`

这将构造一个 intersphinx链接,而不管定义特定对象的角色是什么,尽管我认为您仍然必须正确地指定任何相关的非默认域。如果引用对于 :obj:角色不能正常工作,那么在对象名称或域的某个地方就会出现错误。检查两个地方的打字错误。

如果这仍然是一个问题. 。 你需要省略 URL 末尾的斜杠:

intersphinx_mapping = {'python': ('http://docs.python.org/2', None),
'numpy': ('http://docs.scipy.org/doc/numpy', None),
'scipy': ('http://docs.scipy.org/doc/scipy/reference', None),
'matplotlib': ('http://matplotlib.org/stable', None)}

了解如何进行交叉引用的另一种方法是使用 [咒语]模块。

您可以搜索本地甚至远程库存文件(使用模糊匹配):

$ sphobjinv suggest -t 90 -u https://docs.scipy.org/doc/scipy/reference/objects.inv "signal.convolve2d"


Remote inventory found.


:py:function:`scipy.signal.convolve2d`
:std:doc:`generated/scipy.signal.convolve2d`

请注意,您可能需要使用 :py:func:而不是 :py:function:(我很乐意知道为什么)。