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

有无类似esbuild的Serverless Python独立打包工具?

实现Python Serverless Framework的单函数独立打包(类似Node.js esbuild效果)

核心方案:用serverless-python-requirements插件

这是目前最成熟的Python Serverless打包插件,能精准实现每个函数仅打包自身代码和必要依赖,解决全量上传的问题。

步骤1:安装插件

npm install --save-dev serverless-python-requirements

步骤2:调整项目结构(推荐)

把每个函数放到独立目录,方便精准打包:

your-project/
  functions/
    user-service/
      handler.py
      requirements.txt  # 仅当前函数的依赖
    order-service/
      handler.py
      requirements.txt
  serverless.yml

步骤3:配置serverless.yml

关键是开启individually: true,同时配合函数级的include/exclude规则,确保只打包目标函数:

service: your-python-service

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux  # 本地非Linux环境必加,避免依赖兼容问题
    slim: true  # 剔除依赖中的冗余文件(文档、测试代码等),缩小包体积
    individually: true  # 核心:为每个函数单独打包
    zip: true  # 生成独立的zip包
    exclude:
      - .git/**
      - __pycache__/**
      - tests/**
      - ./**/*.pyc

functions:
  userService:
    handler: functions/user-service/handler.lambda_handler
    package:
      include:
        - functions/user-service/**
      exclude:
        - '!functions/user-service/**'  # 强制排除其他所有文件
  orderService:
    handler: functions/order-service/handler.lambda_handler
    package:
      include:
        - functions/order-service/**
      exclude:
        - '!functions/order-service/**'

步骤4:验证打包效果

运行serverless package,查看.serverless目录下的zip包——每个函数的zip里只会包含自身目录的代码和对应的依赖,没有多余文件。

关于你试过的插件失效原因

serverless-python-individually和serverless-package-python-functions仅处理代码拆分,不负责依赖的筛选和打包,所以会出现包体积依然很大的情况。而serverless-python-requirements会自动分析每个函数的依赖,仅打包必要的库,同时配合代码拆分,完全匹配你要的Node.js esbuild效果。

额外优化

如果有函数共享的工具代码,可以把共享代码放到shared/目录,然后在每个函数的package.include里添加shared/**,插件会自动把共享代码打包进对应的函数包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:10:28