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

Vercel部署Flask API:Serverless函数因Scipy超50MB限制求解决方案

解决Vercel部署Flask API时Scipy导致的函数体积超限问题

1. 手动裁剪Scipy包(最直接有效)

Scipy无法通过pip单独安装子模块,但可以在Vercel构建流程中,先安装完整Scipy,再删除非必要模块缩小体积:

  • 项目根目录创建build.sh脚本:
# 先安装所有依赖(包括Scipy)
pip install -r requirements.txt
# 替换python3.x为你实际使用的Python版本,比如python3.10
SCIPY_PATH="./venv/lib/python3.x/site-packages/scipy"
# 删除不需要的Scipy子模块
rm -rf $SCIPY_PATH/{cluster,constants,fft,fftpack,integrate,interpolate,io,linalg,ndimage,odr,optimize,signal,sparse,special,stats}
# 删除文档、测试文件进一步缩减体积
rm -rf $SCIPY_PATH/doc $SCIPY_PATH/tests
  • 在vercel.json中配置构建命令,让Vercel执行该脚本:
{
  "functions": {
    "api/index.py": {
      "runtime": "@vercel/python@3.10"
    }
  },
  "buildCommand": "./build.sh"
}

裁剪后务必本地测试from scipy.spatial import KDTree是否能正常运行,避免误删依赖的底层文件。

2. 使用轻量替代依赖(备选)

如果手动裁剪过于繁琐,可以尝试使用仅实现KDTree功能的轻量库,比如kdtree或pykdtree,这类库体积远小于完整Scipy。不过你可以先完成Scipy裁剪的尝试,再考虑是否切换。

3. Vercel构建排除配置(局限性较大)

Vercel的vercel.json支持通过include/exclude字段指定函数包的文件范围,但对于Python的site-packages依赖,这种方式难以精准过滤Scipy的子模块,因此不推荐作为主要方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:42:25