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

Python跨目录导入函数报module not found错误如何解决

Python导入同项目模块报ModuleNotFoundError解决方案

你的问题核心是Python模块搜索路径匹配错误、导入语句和运行方式不匹配,按下面步骤排查修复即可:

先确认项目结构

首先确保你的目录结构完全符合下面的规范,__init__.py文件位置不要错:

your_project_folder/  # 项目最外层文件夹,命名无强制要求
└── app/  # 所有业务代码存放的根包
    ├── __init__.py
    ├── utils/
    │   ├── __init__.py
    │   └── calculators.py
    └── tasks/
        ├── __init__.py
        └── process_sessions.py

报错原因和对应修复方案

你写的from utils.calculators import calculate_session属于顶级绝对导入,只有当Python能在模块搜索路径里直接找到utils这个顶级包的时候才能生效,你现在运行代码时的工作目录不对,自然找不到模块。两种修复方案选一种即可:

方案1:用包内相对导入(无需额外配置,适合包内模块互相调用)

直接修改app/tasks/process_sessions.py里的导入语句:

# 两个点代表从当前tasks目录向上跳一级到app目录,再找utils包
from ..utils.calculators import calculate_session

注意:用相对导入时不能直接运行单个脚本文件(比如不能直接执行python process_sessions.py或者python tasks/process_sessions.py),要从最外层的your_project_folder目录下,用模块模式运行:

python -m app.tasks.process_sessions

方案2:保留原绝对导入,修正Python搜索路径

如果你不想改导入语句,就把项目最外层的your_project_folder目录加入Python的模块搜索路径,有两种简单实现方式:

  1. 每次运行前先切到your_project_folder目录(就是能看到app文件夹的那一级),再用上面的-m参数运行模块即可。
  2. 给虚拟环境安装可编辑模式的项目包,一劳永逸:
    • 在your_project_folder目录下新建pyproject.toml文件,写入以下内容:
      [build-system]
      requires = ["setuptools>=61.0"]
      build-backend = "setuptools.build_meta"
      
      [project]
      name = "your-app"
      version = "0.1"
      packages = ["app"]
      
    • 激活你的虚拟环境,在your_project_folder目录下执行命令:
      pip install -e .
      
    装完之后不管你在什么路径运行项目,都能正常识别app下的所有模块,原导入语句不需要修改。

常见踩坑点排查

  • 检查__init__.py文件名是否正确,必须是前后各两个下划线,不要写成_init_.py或者init.py,文件要放在对应包目录下,不要放错层级。
  • 不要直接在app目录或者tasks目录下运行脚本,这种运行方式会把当前脚本所在目录加入搜索路径,找不到同级的其他包。
  • 如果用PyCharm、VSCode等IDE运行,记得把最外层的your_project_folder标记为项目源码根目录,避免IDE提示导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:51:17