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

Python子目录含__init__.py仍出现ModuleNotFoundError问题排查

问题原因

当你在ats_program目录下执行python lha/build_annoy_index.py时,Python会将build_annoy_index.py所在的lha目录添加到sys.path的最优先位置,而非上层的ats_program目录。此时代码里的from lha.preprocessing.clean_text import clean_text会让Python在sys.path中查找名为lha的包,但lha目录本身并没有子包lha,因此触发ModuleNotFoundError。

解决方法(不使用import sys,仅依赖__init__.py)

你的项目里已经存在所有需要的空__init__.py(只要文件存在就能标记目录为Python包,内容为空不影响),只需调整运行方式即可:

  • 不要直接运行脚本文件,而是将其作为模块执行。在ats_program目录下执行以下命令:
    python -m lha.build_annoy_index
    
    这种方式会让Python自动将ats_program目录加入sys.path,此时lha会被识别为顶层包,from lha.preprocessing.clean_text import clean_text就能正常找到对应的模块。

如果坚持要使用相对导入(比如把导入语句改成from .preprocessing.clean_text import clean_text),同样需要用python -m的方式运行脚本,否则直接执行脚本会触发“attempted relative import in non-package”的错误,因为独立运行的脚本不被视为包的一部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:00:55