在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
无需安装系统依赖,直接替换驱动:
- 在
requirements.txt中移除mysqlclient,添加pymysql - 在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" } ] }
额外注意项
- 确保Django
settings.py中配置正确的静态文件根目录:
STATIC_ROOT = BASE_DIR / 'staticfiles'
- Vercel上需使用远程MySQL数据库(如AWS RDS、PlanetScale等),Lambda函数为无状态环境,无法运行本地MySQL。
内容的提问来源于stack exchange,提问作者Omnia Osman
相关产品推荐
相关产品推荐

