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

Python跨目录导入依赖其他模块的模块报错解决方法咨询

解决跨目录导入依赖同目录模块的问题

问题原因

当你在tests/test1.py中导入src.file1时,Python的模块查找路径是以当前运行脚本(test1.py)所在的tests目录为基准的。而file1.py里用from file2 import module2是尝试从当前运行路径(tests目录)找file2,自然找不到,所以报ModuleNotFoundError。

解决方案

方案1:将src转为Python包(推荐,规范做法)

  1. 在src目录下创建一个空的__init__.py文件,让src成为可识别的Python包:
    src
      __init__.py
      file1.py
      file2.py
    tests
      test1.py
    
  2. 修改file1.py的导入语句为相对导入,表示从当前包(src)下导入file2:
    # file1.py
    from .file2 import module2
    modules = 'module1' + module2
    
  3. 保持test1.py的代码不变,直接运行即可,此时Python会从src包中正确找到file2模块。

方案2:使用绝对导入(同样需要src作为包)

如果不习惯相对导入,也可以修改file1.py用绝对导入方式,明确指定从src包导入file2:

# file1.py
from src.file2 import module2
modules = 'module1' + module2

同样需要先给src目录添加__init__.py,test1.py代码不变,运行即可。

方案3:临时修改file1的模块查找路径(适合小型项目快速解决)

如果不想把src做成包,可以在file1.py开头添加代码,把自身所在的src目录加入Python的模块查找路径:

# file1.py
import os
import sys
# 把当前脚本所在目录加入sys.path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from file2 import module2
modules = 'module1' + module2

这样不管从哪个目录导入file1,它都会自动把src目录加到路径里,从而找到file2模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:37:04