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

Python跨目录导入遇ModuleNotFoundError:仅改测试文件,问题出在哪?

问题分析

你的问题出在Python的模块搜索路径机制上:

  • 直接运行src/get_ducks_for_justice.py时,Python会自动把该文件所在的src目录加入模块搜索列表sys.path,所以import config能找到同目录的config.py。
  • 但从tests目录运行duck_tester.py时,sys.path默认只包含tests目录。此时你以包的形式导入src下的模块,get_ducks_for_justice.py里的import config会去sys.path里找全局的config模块,而不是src目录下的那个,自然找不到,就抛出了ModuleNotFoundError。

仅修改duck_tester.py的解决办法

在duck_tester.py的所有导入语句之前,添加代码把src目录加入到模块搜索路径中:

import sys
import os

# 获取当前文件(duck_tester.py)的绝对路径所在目录
tests_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接root目录下的src路径,并转为绝对路径
src_path = os.path.abspath(os.path.join(tests_dir, '../src'))
# 将src目录加入sys.path
sys.path.append(src_path)

这样Python就能在搜索config模块时找到src目录下的config.py,解决导入报错的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:46:02