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

Python跨目录导入类出现ModuleNotFoundError报错如何解决?

解决方法

你遇到的两个报错核心原因是:Python运行时的模块搜索路径没有包含folder2所在的上级根目录,且直接运行file1.py时该文件被识别为顶层执行脚本,无法使用相对导入。以下是2种可直接落地的解决方案:

方案1:用模块方式运行脚本(最规范,无需修改导入代码)

  • 先确认你的项目根目录结构,将folder1、folder2放在同一个根目录下,示例结构:
your_project_root/
├── folder1/
│   └── file1.py
└── folder2/
    ├── __init__.py
    └── class2.py
  • 保留file1.py里的原始导入语句:
    from folder2.class2 import Class2
  • 不要直接进入folder1目录运行python file1.py,而是在your_project_root目录下执行命令:
    python -m folder1.file1
    这个方式会自动将your_project_root加入模块搜索路径,完全符合Python的模块导入规范,不会出现路径兼容问题。

方案2:临时添加搜索路径(适合需要直接运行file1.py的场景)

无需调整运行命令,直接修改file1.py的开头代码,先把根目录加入搜索路径再执行导入:

import sys
from pathlib import Path

# 将file1.py的上两级目录(也就是your_project_root)加入模块搜索路径
sys.path.append(str(Path(__file__).parent.parent.resolve()))

# 再执行正常导入即可
from folder2.class2 import Class2

补充说明

Python 3.3+之后空的__init__.py不是识别目录为Python包的必要条件,你之前添加后仍然报错是因为没有解决模块搜索路径的问题,该文件可以保留不影响运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:48:02