Flask中的Sphinx autodoc ImportError:没有名为的模块

时间:2016-11-10 12:13:46

标签: python flask python-sphinx

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

Theorem incr_ext : forall (x y : bin),
  bin_to_nat x = bin_to_nat y -> bin_to_nat (incr x) = bin_to_nat (incr y).

等等。

在conf.py中我已设置:

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
|           ....

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

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

当我为单独的脚本运行******************************************* OLOLO module ******************************************* Ololololo ====== .. automodule:: flask_app.app.temp :members: 时 - Sphinx autodoc可以工作,但是在我的烧瓶项目中它没有并且向我显示以下错误:

make html

其中config为 config.py

1 个答案:

答案 0 :(得分:2)

纯粹猜测,但是您的sphinx构建器未找到的config模块可能是config.py文件夹中的flask_app模块。您的import config文件中可能存在flask_app/app/temp.py语句,因此当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文件,并且项目中的import语句应该是绝对的从顶部flask_app包中,即:

from flask_app import config

而不是

import config