Sphinx autosummary/autodoc给出了一些模块的错误,但不是全部。
我的代码是开源的:https://github.com/dream-faster/krisi
得到以下错误:
WARNING: autodoc: failed to import module 'metric'; the following exception was raised:
No module named 'metric'
WARNING: autodoc: failed to import module 'report'; the following exception was raised:
No module named 'report'
它导入一些模块(例如。:compare.py
),但无法导入其他(无论它们在哪个子目录中)。
目录结构
library_name
│
└───src
│ │
│ └───library_name
│ └─ __init__.py
│ │
│ └───module_1.py
│ │ └─ __init__.py
│ │ └─ compare.py
│ │ └─ report.py
│ │
│ └───module_2.py
│ └─ __init__.py
│ └─ evaluate.py
│ └─ metric.py
│
└───docs
└───source
└─ conf.py
我尝试过的解决方案:
1。指定路径(尽管它会部分查找模块)
我已经尝试了将path
附加到sys.path
的所有变化:
current_dir = os.path.dirname(__file__)
target_dir = os.path.abspath(os.path.join(current_dir, "../../src/project_name"))
sys.path.insert(0, target_dir)
sys.path.insert(0, os.path.abspath("../.."))
sys.path.insert(0, os.path.abspath("../../src"))
sys.path.insert(0, os.path.abspath("../../src/project_name"))
for x in os.walk("../../src"):
sys.path.append(x[0])
2。检查是否安装了所有依赖项。
我做了一个干净的新conda
环境,并安装了我的pip install -e .
包所有测试通过,覆盖所有模块。
3。检查跨模块导入是否是罪魁祸首
一些模块引用其他模块,例如::module_1.metric
引用module_2.type
然而,正确导入的模块会做同样的事情而不会出现错误。
我忽略了什么?
我发现了两个问题,我不确定是哪个问题引起的。这可能是两者的结合,尽管我很严谨,但我没有得到正确的结合。我有条不紊地删除了所有文件,然后一个接一个地添加回来。
- 配置文件现在:
sys.path.insert(0, os.path.abspath("../../src/project_name"))
- 没有任何模块的相对导入
我希望这能帮助到别人。