Sphinx autodoc 给出警告:py:class reference target not found: type warning

Posted

技术标签:

【中文标题】Sphinx autodoc 给出警告:py:class reference target not found: type warning【英文标题】:Sphinx autodoc gives WARNING: py:class reference target not found: type warning 【发布时间】:2012-07-10 03:50:35 【问题描述】:

我有一些在 python 中使用元类的代码。但是当 sphinx autodoc 运行时,它会给出错误:

WARNING: py:class reference target not found: type

错误发生在自动生成的 .rst 文件的一行中:

.. automodule:: API.list.blockList
    :members: # this is the line in error
    :show-inheritance:

blockList 扩展了 API.list.list,其中 \__metaclass__ 设置为我的元类。

据我所知,sphinx 并不认为内置类型类存在。我尝试导入内置类型以使 sphinx 意识到它的存在,但没有奏效。

如果我从 API.list.list 中删除元类分配,并从代码中删除元类,那么 sphinx 就可以正常工作。

【问题讨论】:

你能提供一个触发这个的最小例子吗? 【参考方案1】:

这只是 Python 文档本身的一个错误——对某些 Python 内置函数(包括 type)的引用无法正确解析(例如,请参阅 https://bugs.python.org/issue11975)。

要使警告消失,您可以将nitpick_ignore 选项添加到您的 Sphinx 配置中。例如,在 Astropy 项目中,我们有:

nitpick_ignore = [('py:class', 'type')]

事实上,有足够多的例外,我们只是将它们全部放在一个单独的文件中,然后再将它们读出。见:

https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/conf.py#L195

对于异常文件本身:

https://github.com/astropy/astropy/blob/35501fcba6811705fcd53669742db8346727672d/docs/nitpick-exceptions

上述文件中的许多异常是特定于 Astropy 的,但其他一些异常解决了 Python 和 Numpy 中的一些损坏的引用,并且可能普遍有用。

【讨论】:

以上是关于Sphinx autodoc 给出警告:py:class reference target not found: type warning的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sphinx 中交叉引用 autodoc 生成的函数?

制作sphinx autodoc时如何忽略python项目中的'src'目录

在 Python Sphinx 中,有没有办法隐藏 autodoc 设置代码?

当一个方法中有两个装饰器时,为啥 sphinx autodoc 会输出一个装饰器的文档字符串?

Sphinx:如何排除自动模块中的导入?

如何设置 Read the Docs 以便 Sphinx 自动文档选项起作用?