Python Flask+MySQL应用本地运行正常,部署AWS Elastic Beanstalk失败
问题根因
报错的核心原因是mysqlclient包编译安装需要依赖Linux系统层面的MySQL开发工具包,Elastic Beanstalk默认的Python运行环境未预装该依赖,导致安装过程中找不到mysql_config命令而失败。你在Windows本地可以正常安装是因为Windows平台下mysqlclient有预编译好的二进制安装包,无需依赖本地系统的MySQL开发工具。
解决方案(二选一即可,均无需手动执行Linux命令)
- 方案1:替换数据库驱动(优先推荐,操作最简)
你的requirements.txt中已包含纯Python实现的MySQL驱动PyMySQL==1.0.2,无需编译系统依赖即可使用,可直接替代mysqlclient:- 编辑
requirements.txt,删除mysqlclient==2.0.3,同时删除仅Windows系统需要的pypiwin32==223、pywin32==301,也可删除仅本地使用的awsebcli==3.20.2,减少不必要的依赖 - 在Flask应用的入口文件(通常为
app.py或项目根目录的__init__.py)的最开头添加两行代码:
import pymysql pymysql.install_as_MySQLdb()- 原有数据库连接配置无需修改,重新执行
eb create即可正常部署。
- 编辑
- 方案2:保留mysqlclient,通过EB配置自动安装系统依赖
如果你需要保留mysqlclient驱动,可通过Elastic Beanstalk的配置文件自动安装所需系统依赖,无需手动操作服务器:- 在本地项目根目录下新建名为
.ebextensions的文件夹 - 在该文件夹内新建名为
mysql.config的文件,写入以下内容:
packages: yum: mariadb-devel: []- 保存配置后重新执行
eb create,EB会在部署前自动安装编译mysqlclient所需的依赖,后续安装流程就可以正常完成。
- 在本地项目根目录下新建名为
内容的提问来源于stack exchange,提问作者Paula Irons
相关产品推荐
相关产品推荐

