Sphinx Autosummary (Autodoc)部分导入模块



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然而,正确导入的模块会做同样的事情而不会出现错误。

我忽略了什么?

我发现了两个问题,我不确定是哪个问题引起的。这可能是两者的结合,尽管我很严谨,但我没有得到正确的结合。我有条不紊地删除了所有文件,然后一个接一个地添加回来。

  1. 配置文件现在:

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

  1. 没有任何模块的相对导入

我希望这能帮助到别人。

相关内容

  • 没有找到相关文章

最新更新