Sphinx autodoc in Flask ImportError: no module named

Sphinx autodoc in Flask ImportError: no module named

我正在尝试为我的 Flask 项目设置 Sphinx autodoc。 这是我的项目的架构:

Folder
|--docs
|   |--build
|   |--source
|       conf.py
|       index.rst
|       mod_ololo.rst
|       ....
|--flask_app
|   |--celery_worker.py
|   |--config.py
|   |--run.py
|   |--app
|       |--__init__.py
|       |--temp.py
|       |--mod_search
|       ....
|       |--mod_files
|           |--__init__.py
|           ....

等等。

在conf.py我已经设置:

sys.path.insert(0, os.path.abspath("../.."))

我正在尝试将 temp.py 的内容添加到我的文档中。 这是mod_ololo.rst的内容:

*******************************************
OLOLO module
*******************************************

Ololololo
======

.. automodule:: flask_app.app.temp
    :members:   

当我 运行 make html 用于单独的脚本时 - Sphinx autodoc 有效,但在我的 flask 项目中它没有,并显示以下错误:

ImportError: No module named 'config'

配置是config.py

纯属猜测,但您的 sphinx 构建器未找到的 config 模块可能是 flask_app 文件夹中的 config.py 模块。您的 flask_app/app/temp.py 文件中某处可能有一个 import config 语句,因此当 sphinx 尝试 运行 其上的 automodule 过程时,它会在该导入上失败。

从您的目录结构来看,您的 flask_app 文件夹似乎不是 python 包,因此您可能必须将该文件夹而不是(或除了)其父文件夹添加到path 在您的 conf.py 文件中:

sys.path.insert(0, os.path.abspath('../../flask_app'))

此外,您可能必须更改 mod_ololo.rst 中的自动模块声明,不要将 flask_app 作为包引用:

.. automodule:: app.temp

如果您实际上 打算将 flask_app 作为一个包使用,那么您需要在该文件夹中有一个 __init__.py 文件,并且在其中导入语句您的项目应该绝对来自顶级 flask_app 包,即:

from flask_app import config

而不是

import config