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

如何创建包含自定义Python模块的AWS Lambda部署zip压缩包?

你提到的这种模块化调用方式在AWS Lambda中完全可以正常使用,以下是具体的操作指导:

一、最终需要打包的文件结构

Lambda的Python运行时会自动把zip包根目录加入模块搜索路径,你需要按以下结构组织打包内容:

zip包根目录/
├── lambda_function.py  # 存放lambda_handler的入口文件,命名可自定义,需和Lambda控制台配置对应
├── WallpaperGenerator.py
├── assets/
│   └── Roboto-Bold.ttf
├── qrcode/  # 从虚拟环境的site-packages目录中复制的qrcode库文件夹
├── PIL/     # 从虚拟环境的site-packages目录中复制的Pillow库文件夹
└── qrcode、PIL对应的.dist-info目录  # 依赖库的元信息文件,需要一并复制

注意不要把整个venv目录打包进去,只需要复制用到的第三方库文件夹即可

二、打包操作步骤
  • 第一步:新建一个空的工作目录用于打包,避免把本地的.git、临时文件等无关内容打进包
  • 第二步:把lambda_function.py、WallpaperGenerator.py、完整的assets文件夹复制到这个空目录中
  • 第三步:复制第三方依赖到工作目录根路径:
    • 如果你本地是Linux环境,直接把venv/lib/python3.7/site-packages/下的qrcode、PIL以及对应的.dist-info目录复制到工作目录即可
    • 如果你本地是Windows/macOS环境,Pillow包含二进制依赖,直接复制本地安装的版本会在Lambda运行报错,建议执行以下命令直接下载兼容Lambda的依赖到工作目录:
      pip install pillow qrcode --platform manylinux2014_x86_64 --python-version 3.7 --only-binary=:all: -t ./你的打包工作目录路径
  • 第四步:进入打包工作目录,选中所有内容打包为zip:
    • Linux/macOS端可在工作目录内执行命令:zip -r ../deployment-package.zip .
    • Windows端需要进入工作目录全选所有内容后右键打包,不要直接打包上层的工作目录文件夹,否则Lambda会找不到入口文件
三、zip包命名规则
  • 命名没有强制约束,只要是后缀为.zip的合法文件名即可,不要包含特殊符号、长度不超过256字符就可以正常上传
  • 直接上传的zip包大小不能超过50MB,超过的话需要先上传到S3再关联到Lambda,解压后的总文件大小不能超过250MB
四、运行前必要调整
  • Lambda运行时的Python版本要和你安装依赖的Python版本一致,这里你用的是Python3.7,需要在Lambda控制台把运行时设置为Python 3.7
  • Lambda控制台的「运行时设置-处理程序」需要和你的入口文件对应,比如入口文件叫lambda_function.py,就设置为lambda_function.lambda_handler
  • 建议把WallpaperGenerator.py里的字体路径改成绝对路径,避免相对路径读取异常,参考写法:
import os
font_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "assets/Roboto-Bold.ttf")
font = ImageFont.truetype(font_path, size=你的字号)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:03