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

Python单元测试报错:ModuleNotFoundError及相对导入问题求助

解决Python Lambda单元测试的模块导入问题

针对你遇到的模块导入错误,这里提供几个实用的解决办法:

方案一:调整测试代码的模块搜索路径(不修改业务代码)

保持业务代码lambda_function.py中的导入不变(from locals import FOO, FOO2),在测试文件lambda_function_tests.py开头添加代码,将app目录加入Python的模块搜索路径:

import sys
from pathlib import Path

# 将app目录(测试文件的父级父目录)添加到sys.path
sys.path.append(str(Path(__file__).parent.parent))

之后测试文件里就可以正常使用from locals import FOO, FOO2或者from app.locals import FOO, FOO2,运行测试时Python就能找到locals模块了。

方案二:统一使用绝对导入并兼容Lambda环境

  1. 修改业务代码lambda_function.py的导入为绝对导入:
from app.locals import FOO, FOO2
  1. 测试文件lambda_function_tests.py同样使用绝对导入:
from app.locals import FOO, FOO2
  1. Lambda部署时,需要将包含app目录的上级目录作为部署包的根目录(即部署包里包含app文件夹),同时将handler配置为app.lambda_function.handler(假设你的处理函数名为handler),确保Lambda运行时能识别app作为顶级模块。

方案三:将app作为可安装包(适合复杂项目)

在项目根目录(app的上级目录)创建pyproject.toml文件:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "app"
version = "0.1.0"

然后在项目根目录执行:

pip install -e .

这会把app作为可编辑的本地包安装,之后不管是业务代码还是测试文件,都可以直接用from app.locals import FOO, FOO2,本地测试和Lambda部署(需按方案二的打包方式)都能正常运行。

内容的提问来源于stack exchange,提问作者Ravel Sbrissa Okada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:23