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

如何使用Poetry创建可部署的Python Lambda压缩包?

解决Poetry构建Python Lambda包的常见问题

问题概述

  • 采用常规pip install方式打包(代码如下)时,因项目包含Poetry的path dependencies,触发报错:pip._vendor.pkg_resources.RequirementParseError: Invalid URL:
    poetry run pip install -t dist/lambda .
    cd dist/lambda
    zip -r ../lambda.zip .
    
  • 使用Poetry Bundle Plugin虽能完成项目及依赖的目录安装,但会一并打包dev、test组依赖,且插件暂不支持指定依赖组,相关修复PR尚未合并

替代解决方案

方案1:导出生产依赖后用pip安装

  1. 导出不含dev、test组的生产环境依赖:
poetry export --without-hashes --without dev,test -f requirements.txt --output requirements.txt
  1. 将项目及依赖安装到目标目录:
pip install -t dist/lambda . -r requirements.txt
  1. 打包成Lambda可用的zip包:
cd dist/lambda
zip -r ../lambda.zip .

注意:若path依赖为本地项目,需先将该依赖安装至当前环境,或确保导出的requirements.txt中路径引用有效

方案2:构建wheel包后单独安装

  1. 先构建项目的wheel包:
poetry build --format wheel
  1. 创建临时目录,分别安装wheel包和生产依赖:
mkdir -p dist/lambda
# 安装项目本身(不带依赖)
pip install -t dist/lambda dist/*.whl --no-deps
# 导出并安装生产依赖
poetry export --without-hashes --without dev,test -f requirements.txt --output temp_requirements.txt
pip install -t dist/lambda -r temp_requirements.txt
rm temp_requirements.txt
  1. 完成打包:
cd dist/lambda
zip -r ../lambda.zip .

方案3:Bundle Plugin安装后手动清理依赖

若已用Bundle Plugin完成安装,可手动删除dev、test相关依赖目录:

  1. 先用Bundle Plugin安装所有依赖:
poetry bundle install --directory dist/lambda
  1. 删除指定的dev/test依赖(需根据项目依赖列表明确目标,如pytest、black等):
rm -rf dist/lambda/pytest* dist/lambda/black*
  1. 执行打包:
cd dist/lambda
zip -r ../lambda.zip .

注意:此方法适合依赖较少的项目,需准确识别dev/test依赖包名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:05:33