You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sphinx文档化子项目遇ModuleNotFoundError:helperfunc找不到

解决Sphinx autodoc导入同目录模块失败的问题

问题原因

你遇到的警告是因为Sphinx在导入nfz_extraction.nfzOcr时,无法解析同目录下helperfunc的导入路径。虽然nfzOcr和helperfunc在同一目录,但你使用的from helperfunc import...是绝对导入,而Sphinx通过sys.path.insert(0, os.path.abspath(".."))把项目根目录加入路径后,会尝试从根目录查找helperfunc模块,而非nfz_extraction子目录下的同名模块,因此找不到。

解决方案

方案1:改用相对导入(推荐)

修改nfzOcr.py中的导入语句为相对当前包的形式:

from .helperfunc import dbDeleteRow, dbInsert, dbSelect

这种方式明确指定从当前模块所在的包(即nfz_extraction)中导入helperfunc,无论在项目运行还是Sphinx文档生成时都能正确解析路径。

方案2:调整conf.py的路径配置

如果不想修改业务代码,可以在conf.py中把nfz_extraction目录直接加入sys.path:

import os
import sys
# 加入项目根目录
sys.path.insert(0, os.path.abspath(".."))
# 额外加入nfz_extraction目录
sys.path.insert(0, os.path.abspath("../nfz_extraction"))

这样Sphinx就能直接找到helperfunc模块,但这种方式可能会导致模块命名冲突,不如相对导入规范。

方案3:确保项目是可安装的包结构

如果你的项目是标准的Python包(包含setup.py或pyproject.toml),可以先在开发模式下安装项目:

pip install -e .

这样Python会把项目包加入全局路径,Sphinx就能正常解析所有内部导入,无需额外调整sys.path。

内容的提问来源于stack exchange,提问作者user3793935

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:15:39