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

AWS Lambda运行时模块导入异常:如何映射ultralytics.yolo为yolov5

解决AWS Lambda中导入yolov5时出现的'ultralytics.yolo'模块找不到问题

问题背景

将Docker镜像上传至ECR后,在AWS Lambda运行时触发错误:找不到模块'ultralytics.yolo',无法导入app.py。但app.py中仅引用yolov5相关模块:

import yolov5
from yolov5.utils.general import (cv2, xyxy2xywh)
...

实际通过pip安装的是ultralytics/yolov5的fork版本,ultralytics是其依赖项,容器内/var/task目录下已存在ultralytics和yolov5目录。

核心原因

你安装的yolov5 pip包内部代码中存在对ultralytics.yolo的隐式引用,但Lambda运行环境中该模块的路径映射存在问题,导致无法找到对应模块。

解决方案:通过模块映射解决

可以通过将ultralytics.yolo映射到已存在的yolov5模块来解决,具体有两种可行方式:

方法1:在Docker镜像中创建软链接

在Dockerfile中添加以下命令,在依赖目录下创建软链接,把yolov5目录映射为ultralytics/yolo:

RUN ln -s /var/task/yolov5 /var/task/ultralytics/yolo

构建镜像时执行该命令,即可让Python在查找ultralytics.yolo时指向已安装的yolov5模块。

方法2:在app.py开头添加模块映射代码

直接在app.py的最顶部添加代码,手动将ultralytics.yolo模块指向已导入的yolov5:

import sys
import yolov5

# 将ultralytics.yolo映射到已加载的yolov5模块
sys.modules['ultralytics.yolo'] = yolov5
sys.modules['ultralytics.yolo.utils'] = yolov5.utils
# 如果有更深层的子模块,可按需添加映射

这种方式无需修改Docker镜像,直接通过代码调整模块查找路径。

验证

完成上述操作后,重新构建镜像并上传至ECR,测试Lambda函数确认是否仍出现模块找不到的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:35:14