【问题标题】:ReadTheDocs not parsing docstrings in Python modules (Sphinx)ReadTheDocs 不解析 Python 模块中的文档字符串(Sphinx)
【发布时间】:2016-08-09 06:07:56
【问题描述】:

我已经开源了我的一些代码,但是文档无法在 ReadTheDocs 上正确构建,尽管使用 sphinx-quickstartmake html 在本地创建的 Makefile 按预期工作。谁能告知我在 RTD 集成方面做错了什么?

我已经阅读了有关可能使用 RTD 高级设置在 virtualenv 中构建模块的信息,但这不起作用,因为我有 scipy 作为要求,并且由于没有可用的 BLAS 库而构建失败(这也是一项不必要的长任务对于每个构建的文档)。

sphinx.ext.autodoc 和 sphinx.ext.napoleon(用于谷歌风格的文档字符串)都包括在内。在本地,我只运行了一次dev-scripts/api-docs.sh,它创建了docs/source/bnol.rstdocs/source/modules.rst。然后使用标准 Makefile(在 git repo 中忽略)按预期构建文档。

编辑:我发现了这个FAQ detailing the build process on RTD 并在本地使用了与sphinx-build 相同的过程,它按预期工作。我正在搜索 RTD 日志以查找错误,但目前还没有什么值得注意的。

【问题讨论】:

  • 嘿@Arran 我不是 RTD 专家,但看起来您需要 github 存储库中 BNoL/docs 文件夹中的 Makefile。我也看不到您的 github 设置,但您还需要启用 RTD 服务挂钩设置。一旦你拥有这两个,它应该可以工作。
  • 谢谢@BradBaskin。请参阅下面的修复程序。

标签: python-sphinx read-the-docs


【解决方案1】:

使用 Sphinx 的 autodocdocstring comments 创建文档需要加载 Python 文件,因此它们导入的所有模块也将被导入。 ReadTheDocs 将构建所需的模块,尤其是在 numpyscipy 的情况下,可能会失败。

我通过从setup.py 中删除模块并将它们列在包根目录中的pip 需求文件./requirements.txt 中来纠正问题,以便在实际包安装中使用。然后将一个虚拟(空)需求文件放置在 ./docs/source/ 中,并将 ReadTheDocs 配置指向那里(即使未指定,它似乎也会自动加载 ./requirements.txt,因此需要虚拟)。

这仍然存在导入模块的问题,该问题已通过mock 修复,如我的./docs/source/conf.py 文件中所见,详细信息见: http://blog.rtwilson.com/how-to-make-your-sphinx-documentation-compile-with-readthedocs-when-youre-using-numpy-and-scipy/

完整的更改列表请参见commit that solved the problem

【讨论】:

  • 这帮助我解决了我的问题,但我发现您不必从 setup.py 中删除模块,只需创建模拟需求文件并将 RTD 指向它即可。为发布您自己的问题的解决方案而欢呼。
  • 我遇到了同样的问题;在我的repo_dir/docs/conf.py 中,我设置了sys.path.insert(0, os.path.abspath('../app_dir')) 对应于repo_dir/app_dir/__init__.py。通过将其更改为 sys.path.insert(0, os.path.abspath('../')) 来修复它
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多