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

Flask网页抓取应用部署Vercel报错:函数运行时版本无效

问题分析与修复方案

错误根源

你遇到的报错Function Runtimes must have a valid version, for example now-php@1.0.0,核心原因是**vercel.json中runtime的格式不符合Vercel的规范**。Vercel要求函数运行时必须遵循[运行时包名]@[版本号]的格式,而你直接写python3.10.2`,完全不符合这个格式要求。

修复步骤

1. 修正vercel.json的runtime配置

将runtime字段改为Vercel官方的Python运行时格式:@vercel/python@<指定版本>,比如对应你需要的3.10版本,写成@vercel/python@3.10。

同时补充静态文件路由规则,让Vercel直接处理静态资源,避免通过Flask转发影响性能。修改后的完整vercel.json如下:

{
  "functions": {
    "app.py": {
      "runtime": "@vercel/python@3.10"
    }
  },
  "routes": [
    {
      "src": "/static/(.*)",
      "dest": "/static/$1"
    },
    {
      "src": "/extract_table",
      "methods": ["POST"],
      "dest": "/app.py"
    },
    {
      "src": "/(.*)",
      "dest": "/app.py"
    }
  ],
  "version": 2
}

2. 确保requirements.txt依赖完整

确认requirements.txt包含Flask及项目所需的所有依赖,示例内容:

Flask==2.3.3
requests==2.31.0
# 补充你用到的网页抓取相关库,比如beautifulsoup4、lxml等

3. 验证app.py的入口结构

确保app.py中正确初始化并导出Flask实例,适配模板路径:

from flask import Flask, render_template, request

# 指定模板文件夹路径,匹配你的项目结构
app = Flask(__name__, template_folder='templates/frontend')

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/extract_table', methods=['POST'])
def extract_table():
    # 你的网页抓取逻辑
    pass

if __name__ == '__main__':
    app.run(debug=True)

额外注意事项

  • Vercel支持的Python版本范围是3.8~3.11,选择版本时请确保在此区间内
  • 部署时Vercel会自动读取requirements.txt安装依赖,无需手动操作
  • 静态文件路由的配置是让Vercel直接返回static目录下的资源,提升访问速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:46:09