【问题标题】:Sphinx autosummary "toctree contains reference to nonexisting document" warningsSphinx 自动摘要“目录树包含对不存在文档的引用”警告
【发布时间】:2012-08-25 17:45:11
【问题描述】:

我正在尝试使用 Sphinx 为大型 python 代码库自动创建 api 文档。

我尝试过使用 build_modules.py 和 sphinx-apidoc。使用任何一个,我都可以在我的输出目录中为包和顶级模块成功创建第一个文档。

但是,当我使用构建时

make html

它给出了数千个这种类型的错误:

<autosummary>:None: WARNING: toctree contains reference to nonexisting document 'rstDocs/src.Example1.class1.method1'

对于代码库中的每个类和方法。 通过一些实验,我想我发现 autosummary/autoclass 指令正在创建期望每个类和方法都有 rst 文件的目录树。

除了警告之外,文档似乎运行良好,但我想摆脱它们,我想我可能配置错误。

我也尝试过nipype/tools,效果大致相同。

我修改了apigen.pybuild_modref_templates.py 来为这些“缺失”的文档中的每一个创建第一个存根,并根据需要使用自动类/自动功能/自动方法。但是,构建需要相当长的时间(10 分钟),最终由于最后一个构建步骤的内存错误而崩溃。

这是一个创建所有警告的示例模块 rst 文件:

src Package
===========

:mod:`src` Package
------------------

.. automodule:: src.__init__
    :members:
    :undoc-members:
    :show-inheritance:

:mod:`Example1` Module
------------------------------------

.. automodule:: src.Example1
    :members:
    :undoc-members:
    :show-inheritance:

:mod:`Example2` Module
------------------

.. automodule:: src.Example2
    :members:
    :undoc-members:
    :show-inheritance:

感谢您就如何解决这些警告提供任何建议!我想远离任何涉及修改 sphinx 站点包文件的解决方案。

【问题讨论】:

标签: python python-2.7 python-sphinx toctree sphinx-napoleon


【解决方案1】:

很抱歉这么晚的答案(如果可以考虑的话),但我发现这个链接讨论了你可能发生的事情:

https://github.com/phn/pytpm/issues/3#issuecomment-12133978

如果您的文档代码中有一些特殊的 Doc scraper 在 autosummary 已经运行后构建 autosummary 文档,那么如果您仍然遇到此问题,则可能需要考虑这一点。不过,我不确定这会有多大帮助。

链接中的关键是添加:numpydoc_show_class_members = False to conf.py

【讨论】:

  • 如果你这样做,那会删除方法表,不过:(
  • 有没有人发现不删除方法表的解决方案?我无法切换到sphinx.ext.napoleon,因为它似乎不支持与numpydoc_use_plots 相同的功能。
  • > 有没有人发现不删除方法表的解决方案?是的,将 matplotlib/sphinxext/plot_directive.py 复制到您的 doc 本地目录中,并将其用作附加的 sphinx 指令。
【解决方案2】:

如果您使用的是numpydoc 扩展,您可以考虑将其删除并改用sphinx.ext.napoleon

从 1.3 版开始,这个内置扩展实际上支持 Numpy 和 Google 样式的文档字符串。

因此,删除numpydoc 并在conf.py 中使用sphinx.ext.napoleon 可能会解决您的问题。


来源

【讨论】:

    【解决方案3】:

    我也遇到了这个问题,花了几个小时,以下对我有用:

    狮身人面像可能会很挑剔,有时甚至会出现一些出乎你意料的事情。 例如,您会遇到类似的情况:

    WARNING: toctree contains reference to nonexisting document u'all-about-me'
    ...
    checking consistency...
    <your repository>/my-first-docs/docs/all-about-me.rst::
    WARNING: document isn't included in any toctree'
    

    很可能,这里发生的情况是,您在 .. toctree:: 中用四个空格缩进了 all-about-me,而 Sphinx 期望的是三个空格。

    来源:docs!

    【讨论】:

    • 终于找到问题了;喜悦的泪水从我脸上滑落
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2013-02-21
    • 1970-01-01
    • 2020-10-30
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多