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

Pytest导入错误问题:找不到utility模块

解决同目录模块导入报错问题

针对你遇到的ModuleNotFoundError: No module named 'utility'问题,即使添加了__init__.py仍未解决,这里提供几种可行方案:

方案1:使用相对导入

在test_app.py中用相对路径导入同目录的utility.py:

# 导入整个utility模块
from . import utility

# 或者导入模块里的特定函数/类
from .utility import target_function

⚠️ 注意:如果直接通过python test_app.py运行脚本,这种相对导入会失效——因为此时脚本被当作独立的顶层模块,而非tests.uploders包的一部分。

方案2:手动添加模块路径到Python搜索路径

在test_app.py的最开头添加以下代码,将当前脚本所在目录加入Python的模块搜索路径:

import sys
import os

# 获取当前脚本所在目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 将该目录加入sys.path
sys.path.append(current_dir)

# 现在可以正常导入utility
import utility

这种方法不受运行方式限制,无论直接运行脚本还是从其他地方调用都能生效。

方案3:从项目根目录运行测试(推荐)

打开终端,切换到repo目录(项目根目录),然后用模块方式运行测试脚本:

python -m tests.uploders.test_app

这种运行方式会自动将项目根目录加入Python的模块搜索路径,此时你既可以用相对导入,也可以用绝对导入:

# 绝对导入方式
from tests.uploders import utility

为什么加了__init__.py还是报错?

__init__.py的作用是让Python将该目录识别为一个包,但如果你的运行方式不对(比如直接在uploders目录下运行test_app.py),Python不会把uploders当作包的一部分,自然无法通过相对或包路径找到模块。从项目根目录用模块方式运行,是最符合Python包结构规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:40:52