我对 Sphinx 的递归自动摘要感到疯狂。我的工作目录是:
my_wd
|
|-- docs
| |-- source
| |--index.md
| |--conf.py
| |-- _templates
| |-- custom-module-template.rst
| |-- custom-class-template.rst
|-- my_library
| |-- several .py modules
在
conf.py
的顶部是:
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))
在
index.md
我有:
```{toctree}
:caption: 'Contents:'
:maxdepth: 2
Home <self>
```
```{include} ../../README.md
:relative-images:
```
```{eval-rst}
.. autosummary::
:toctree: _autosummary
:template: custom-module-template.rst
:recursive:
my_library
```
并且文件
custom-module-template.rst
和custom-class-template.rst
根据这个答案填写。
自动摘要仍然不起作用。在日志中我首先得到
[autosummary] generating autosummary for: _autosummary/module1.rst, _autosummary/module2.rst...
(这似乎不对:为什么它要寻找第一个文件?)
然后我明白了
WARNING: [autosummary] failed to import my_library.
Possible hints:
* ValueError: not enough values to unpack (expected 2, got 1)
* ModuleNotFoundError: No module named 'my_library'
* KeyError: 'my_library'
failed to import my_library.module
对于
module.py
文件夹中包含的每个 my_library
。
这意味着(我猜)sphinx 实际上在
.py
文件夹中看到了不同的 my_library
模块(但它随后正在寻找相应的第一个文件?!)。所以绝对路径应该是正确的。
这对我来说听起来像是路径错误,但我认为路径是正确的。 我做错了什么?
我通过在项目根目录创建一个脚本来解决这个问题,该脚本使用我在终端中使用的相同参数直接导入和调用 Jupyter Book CLI。
我本来打算使用此方法在 Jupyter Book 和 Sphinx 代码中设置调试器断点来确定问题的根本原因,但找到了解决方案...
代替:
jupyter-book build --config docs/_config.yml --toc docs/_toc.yml --path-output docs .
用途:
from jupyter_book.cli.main import main
main(["build", "--config", "docs/_config.yml", "--toc", "docs/_toc.yml", "--path-output", "docs", "."])