忽略 autodoc 中的一些模块

Ignore some modules in autodoc

我正在尝试仅对选定的模块使用 autodoc。我创建了一个文件,其中包括:

.. automodule:: some.specific.module
   :members:

并且生成正确。不幸的是,autodoc 也一直在尝试解析其他文件(并且由于导入错误而失败)。我知道我可以模拟一些模块,但我想要一个更好的解决方案 - 阻止 sphinx 开始查看它们。

如何确保只加载请求的模块,而不是(例如)test.other.module

我发现发生这种情况的三个可能原因:

  • Sphinx 的缓存有问题,make clean 可以解决问题
  • 您的模块位于一个包中,并且包的 __init__.py 文件 正在导入这些 "other files"(或者更准确地说是试图 导入它们);
  • 这些"other files"是导入的,因为你设置了PYTHONSTARTUP

原来这是一个愚蠢的错误。由于某些工具会为 api 文档源生成脚手架,因此这些文件被遗弃并触发了错误的导入。

这是如何找到的:

  • sphinx 有多个级别的调试日志记录,通常不会被激活
  • 你可以通过像
  • 这样的调试输出来查看哪些行触发导入
 [autodoc] /path/to/the/doc.rst:158: input:
 .. automodule:: app.module.name
    :members: