Sphinx 递归自动摘要不导入模块

问题描述 投票:0回答:1

我对 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
模块(但它随后正在寻找相应的第一个文件?!)。所以绝对路径应该是正确的。

这对我来说听起来像是路径错误,但我认为路径是正确的。 我做错了什么?

python python-sphinx read-the-docs autosummary
1个回答
0
投票

我通过在项目根目录创建一个脚本来解决这个问题,该脚本使用我在终端中使用的相同参数直接导入和调用 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", "."])
© www.soinside.com 2019 - 2024. All rights reserved.