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 设置代码?