sphinx.ext.intersphinx
-- 链接到其他项目的文档¶
Added in version 0.5.
此插件可以生成到外部项目中对象文档的链接,可以通过 external
角色显式地生成,也可以作为任何其他交叉引用的后备解析。
后备解析的用法很简单:每当 Sphinx 遇到当前文档集中没有匹配目标的交叉引用时,它会查找在 intersphinx_mapping
中配置的外部文档集中的目标。例如,:py:class:`zipfile.ZipFile`
可以链接到 Python 文档中 ZipFile 类的文档,而无需您指定其确切位置。
使用 external
角色时,您可以强制查找任何外部项目,也可以选择特定的外部项目。例如,:external:ref:`comparison manual <comparisons>`
将链接到文档集中的 "comparisons" 标签,无论它是否存在。而 :external+python:ref:`comparison manual <comparisons>`
将仅链接到文档集 "python" 中的 "comparisons" 标签,如果存在。
在幕后,它的工作原理如下:
每个 Sphinx HTML 构建都会创建名为
objects.inv
的文件,其中包含从对象名称到相对于 HTML 集根目录的 URI 的映射。使用 Intersphinx 插件的项目可以在
intersphinx_mapping
配置值中指定这些映射文件的位置。然后,该映射将用于解析external
引用,以及其他缺失的对象引用到其他文档的链接。默认情况下,映射文件被假定在与其余文档相同的位置;但是,也可以单独指定映射文件的位置,例如,如果文档应该在没有互联网访问的情况下构建。
配置¶
要使用 Intersphinx 链接,请将 'sphinx.ext.intersphinx'
添加到 extensions
配置值中,并使用以下配置值来激活链接:
- intersphinx_mapping¶
此配置值包含应在此文档中链接到的其他项目的位置和名称。
目标位置的相对本地路径被视为相对于构建文档的基础,而清单位置的相对本地路径被视为相对于源目录。
在获取远程清单文件时,代理设置将从
$HTTP_PROXY
环境变量中读取。格式
Added in version 1.0.
将唯一标识符映射到元组
(target, inventory)
的字典。每个target
是外部 Sphinx 文档集的基本 URI,可以是本地路径或 HTTP URI。inventory
指示清单文件的位置:它可以是None
(与基本 URI 相同位置的objects.inv
文件)或另一个本地文件路径或完整的 HTTP URI 到清单文件。唯一标识符可以在
external
角色中使用,以便清楚地知道目标属于哪个 intersphinx 集。例如,:external+python:ref:`comparison manual <comparisons>`
将链接到文档集 "python" 中的 "comparisons" 标签,如果存在。示例
要在 Python 标准库文档中添加到模块和对象的链接,请使用:
intersphinx_mapping = {'python': ('https://docs.python.org/3', None)}
这将从互联网下载相应的
objects.inv
文件,并生成链接到给定 URI 下的页面。第二个示例,显示第二个元组项的非
None
值的含义:intersphinx_mapping = {'python': ('https://docs.python.org/3', 'python-inv.txt')}
这将从源目录中的
python-inv.txt
读取清单,但仍然生成链接到https://docs.python.org/3
下的页面。当 Python 文档中添加新对象时,您需要更新清单文件。清单的多个目标
Added in version 1.3.
可以为每个清单指定替代文件。可以像下面的示例中所示给第二个清单元组项提供一个元组。这将迭代第二个元组项中的条目,直到第一个成功的获取为止。这是指定主要清单的镜像站点的主要用例,以防主清单服务器出现故障:
intersphinx_mapping = {'python': ('https://docs.python.org/3', (None, 'python-inv.txt'))}
对于一组本地编辑和测试的书籍,然后一起发布,首先尝试本地清单文件可能会有所帮助,以便在发布之前检查引用:
intersphinx_mapping = { 'otherbook': ('https://myproj.readthedocs.io/projects/otherbook/en/latest', ('../../otherbook/build/html/objects.inv', None)), }
- intersphinx_cache_limit¶
缓存远程清单的最大天数。默认值为
5
,表示五天。将其设置为负值以无限期缓存清单。
- intersphinx_timeout¶
超时的秒数。默认值为
None
,表示不超时。Note
超时不是整个响应下载的时间限制;而是如果服务器在超时秒内没有发出响应,则会引发异常。
- intersphinx_disabled_reftypes¶
Added in version 4.3.
Changed in version 5.0: 将默认值从空列表更改为
['std:doc']
。一个字符串列表,可以是:
域中特定引用类型的名称,例如
std:doc
、py:func
或cpp:class
,域的名称和通配符,例如
std:*
、py:*
或cpp:*
,或简单的通配符
*
。
默认值为
['std:doc']
。当 intersphinx 解析非
external
交叉引用时,如果匹配此列表中的规范之一,则跳过解析。例如,使用
intersphinx_disabled_reftypes = ['std:doc']
,交叉引用:doc:`installation`
将不会尝试通过 intersphinx 解析,但:external+otherbook:doc:`installation`
将尝试在intersphinx_mapping
中命名为otherbook
的清单中解析。同时,例如 Python 中生成的所有交叉引用声明仍将尝试通过 intersphinx 解析。如果
*
在域列表中,则不会通过 intersphinx 解析非external
引用。
显式引用外部对象¶
Intersphinx 插件提供了以下角色。
- :external:¶
Added in version 4.4.
使用 Intersphinx 仅在外部项目中执行查找,而不是当前项目。Intersphinx 仍然需要知道您要查找的对象类型,因此此角色的一般形式是将交叉引用写成如果对象在当前项目中,然后在前面加上
:external
。然后有两种形式:external:domain:reftype:`target`
, 例如:external:py:class:`zipfile.ZipFile`
, 或:external:reftype:`target`
, 例如:external:doc:`installation`
. 使用此简写,假定域为std
。
如果您想将查找限制在特定的外部项目中,则还需要添加项目的键,如
intersphinx_mapping
中指定的那样,以获得两种形式:external+invname:domain:reftype:`target`
, 例如:external+python:py:class:`zipfile.ZipFile`
, 或:external+invname:reftype:`target`
, 例如:external+python:doc:`installation`
。
显示 Intersphinx 映射文件的所有链接¶
要显示 Intersphinx 映射文件的所有 Intersphinx 链接及其目标,请运行 python -msphinx.ext.intersphinx url-or-path
。当搜索文档项目中断的 Intersphinx 链接的根本原因时,这很有帮助。以下示例打印 Python 3 文档的 Intersphinx 映射:
$ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv