我正在尝试使用Sphinx记录项目,并且遇到了一个问题,即从文件夹中仅导入某些模块。我的项目结构如下:
Project
|
|--Main
| |--Scripts
| __init__.py
| libsmop.py
| conv_table.py
| f_discrim.py
| recipes.py
| ...
[当我尝试运行make html
时,没有任何问题地导入了libsmop
和recipes
,但是conv_table
和f_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 > ...}
您将根据Sphinx docs检查模块的装载路径:
对于Sphinx(实际上是执行Sphinx的Python解释器)以找到您的模块,它必须是可导入的。这意味着模块或软件包必须位于sys.path的目录之一中–相应地在配置文件中调整sys.path。
此外,了解Scripts目录中的__init__.py
外观以及conv_table
模块的外观也很有用。
由于您的autodoc正在拾取某些模块,可能是因为失败的模块的依赖关系要么是1)导入不正确,要么是2)未在python环境下安装。您将要检查所有导入语句是否都在失败的模块中工作。