Sphinx autodoc无法导入模块

时间:2019-02-21 20:29:51

标签: python python-sphinx autodoc

我正在尝试使用Sphinx记录项目,并且遇到一个问题,即从文件夹中仅导入某些模块。我的项目结构如下:

Project
|
|--Main
|    |--Scripts
|          __init__.py
|          libsmop.py
|          conv_table.py
|          f_discrim.py
|          recipes.py
|          ...

当我尝试运行make html时,导入libsmoprecipes没有任何问题,但是conv_tablef_discrim出现以下错误:

WARNING: autodoc: failed to import module u'conv_table' from module u'Scripts'; the following exception was raised:No module named conv_table

我不认为这是我的配置文件,因为它在我运行sphinx-apidoc -o _rst Main/Scripts时会找到所有文件,并且已经确认它们会出现在生成的Scripts.rst文件中。

为什么autodoc无法找到某些模块,而找不到其他模块?

编辑: conv_table.py的格式为:

import re
import numpy as np

"""
conv_table dictionary at the bottom of this file maps from matlab functions
to their python equivalents.
"""

def get_args(line,separator=",", open_char='(', close_char=')'):
    """Returns the arguments of line

    >>> get_args('ones(3,1,length(arr))')

...
< a bunch of function definitions>
...

conv_table = {... < a very big dictionary > ...}

2 个答案:

答案 0 :(得分:1)

由于您的autodoc正在拾取某些模块,可能是因为出现故障的模块的依赖关系是1)未正确导入或2)未在python环境下安装的。您将要检查所有导入语句是否在失败的模块中正常工作。

答案 1 :(得分:0)

您将根据Sphinx docs检查模块的加载路径:

  

要让Sphinx(实际上是执行Sphinx的Python解释器)找到您的模块,它必须是可导入的。这意味着模块或软件包必须位于sys.path的目录之一中–相应地在配置文件中修改sys.path。

了解Scripts目录中的__init__.py的外观以及conv_table模块的外观也很有用。