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

AWS Elastic Beanstalk部署Django+MySQL失败:依赖安装错误求助

解决AWS Elastic Beanstalk部署Django时mysqlclient依赖安装失败问题

核心原因

本地环境的配置不会同步到Elastic Beanstalk的远程实例,实例在构建时缺少mysql/mariadb的系统开发库,导致pkg-config无法找到配置,进而无法编译安装mysqlclient。

解决方案

方案1:通过.ebextensions配置文件自动安装依赖并设置环境变量

这是最可靠的方式,能确保实例启动时自动完成配置:

  1. 在Django项目根目录创建.ebextensions文件夹(如果不存在)
  2. 在该文件夹内新建01_mysql_deps.config文件,写入以下内容:
packages:
  yum:
    mariadb-devel: []

option_settings:
  aws:elasticbeanstalk:application:environment:
    MYSQLCLIENT_CFLAGS: "-I/usr/include/mysql"
    MYSQLCLIENT_LDFLAGS: "-L/usr/lib64/mysql -lmysqlclient"
  1. 将.ebextensions文件夹加入版本控制,重新执行eb deploy

方案2:使用pymysql替代mysqlclient(无需编译)

如果不想处理编译依赖,可以改用纯Python的pymysql:

  1. 在requirements.txt中替换mysqlclient为pymysql
  2. 在Django项目的__init__.py文件中添加以下代码:
import pymysql
pymysql.install_as_MySQLdb()
  1. 重新执行eb deploy

方案3:在Elastic Beanstalk控制台手动设置环境变量

  1. 登录AWS控制台,进入Elastic Beanstalk对应环境的配置页面
  2. 找到「软件」配置项,点击「编辑」
  3. 在「环境属性」中添加两个变量:
    • 键:MYSQLCLIENT_CFLAGS,值:-I/usr/include/mysql
    • 键:MYSQLCLIENT_LDFLAGS,值:-L/usr/lib64/mysql -lmysqlclient
  4. 保存配置,环境会自动重启并重新构建应用

注意事项

  • 如果你使用的是Amazon Linux 2以外的EB平台(比如Amazon Linux 1),系统包名称和路径可能不同,需要调整mariadb-devel为mysql-devel,路径对应修改为/usr/include/mysql和/usr/lib/mysql
  • 确保.ebextensions文件夹的文件名正确(开头是点,不能拼写错误),且被包含在git提交中,否则EB无法读取配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:49:50