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

在Vercel部署Django REST Framework时遇构建失败错误求助

解决Vercel部署DRF时的两个核心错误

错误1:mysqlclient安装失败(找不到mysql_config)

Vercel构建容器默认未预装MySQL/MariaDB开发依赖库,导致mysqlclient无法编译安装,有两种解决方式:

方案A:构建脚本中预装系统依赖

修改build_files.sh,先安装MySQL开发库,再处理Python依赖:

# 适配Vercel的Ubuntu环境,安装MySQL开发依赖
apt-get update && apt-get install -y default-libmysqlclient-dev gcc
# 安装Python项目依赖
pip install -r requirements.txt
# 收集静态文件
python manage.py collectstatic --noinput

方案B:改用pymysql替代mysqlclient

无需安装系统依赖,直接替换驱动:

  1. 在requirements.txt中移除mysqlclient,添加pymysql
  2. 在Django项目根目录的__init__.py(如shopwise/__init__.py)中加入:
import pymysql
pymysql.install_as_MySQLdb()

错误2:python3.10: command not found

@vercel/static-build环境不会自动关联@vercel/python指定的Python版本,直接用python3.10会找不到命令:

  • 将脚本中的python3.10改为python即可,因为@vercel/python已指定python3.10.7作为运行时,构建环境中python命令会指向该版本。

可选优化:合并构建步骤(删除build_files.sh)

修改vercel.json,将依赖安装、静态文件收集整合到Python构建配置中,无需单独的shell脚本:

{
  "version": 2,
  "builds": [
    {
      "src": "shopwise/wsgi.py",
      "use": "@vercel/python",
      "config": { 
        "maxLambdaSize": "15mb", 
        "runtime": "python3.10.7",
        "installCommand": "apt-get update && apt-get install -y default-libmysqlclient-dev gcc && pip install -r requirements.txt",
        "buildCommand": "python manage.py collectstatic --noinput"
      }
    }
  ],
  "routes": [
    {
      "src": "/static/(.*)",
      "dest": "/static/$1"
    },
    {
      "src": "/(.*)",
      "dest": "shopwise/wsgi.py"
    }
  ]
}

额外注意项

  • 确保Djangosettings.py中配置正确的静态文件根目录:
STATIC_ROOT = BASE_DIR / 'staticfiles'
  • Vercel上需使用远程MySQL数据库(如AWS RDS、PlanetScale等),Lambda函数为无状态环境,无法运行本地MySQL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:32:20