Google Cloud部署Flask应用遇mysql.connector模块缺失问题求助
解决方案:GCP部署Flask应用时的依赖缺失与数据库连接问题
1. 解决ModuleNotFoundError: No module named 'dotenv'
如果打算继续用.env文件加载环境变量,必须把python-dotenv添加到requirements.txt中:
# 在requirements.txt末尾追加 python-dotenv==1.0.0
如果已经改用GCP的环境变量管理(控制台配置或部署命令设置),保持当前注释dotenv的代码即可,无需添加该依赖。
2. 解决ModuleNotFoundError: No module named 'mysql'
你本地安装了mysql-connector-python但未写入requirements.txt,GCP部署时只会根据该文件安装依赖,因此必须补充:
# 在requirements.txt末尾追加 mysql-connector-python==8.3.0
修改后重新执行gcloud app deploy,GCP会自动安装该包,就能正常导入mysql.connector。
3. 额外修正与配置提醒
- 代码中
render_tempalate是拼写错误,需改为render_template,否则会出现模板渲染失败问题。 jinja1应为jinja2(Flask默认依赖Jinja2),修正导入语句:from jinja2 import Environment, FileSystemLoader- 确认GCP环境变量配置正确:
若不用.env,可通过命令行设置后部署:
也可在GCP控制台的「App Engine -> 服务 -> 版本 -> 编辑版本」中手动配置环境变量。gcloud app deploy --set-env-vars DB_HOST=你的数据库地址,DB_PASS=你的数据库密码,...
4. 修改后的requirements.txt示例
Flask==3.0.0; python_version > '3.6' Flask==2.3.3; python_version < '3.7' Werkzeug==3.0.1; python_version > '3.6' Werkzeug==2.3.7; python_version < '3.7' gunicorn==20.1.0 mysql-connector-python==8.3.0 # 如需保留dotenv功能则取消下面注释 # python-dotenv==1.0.0
内容的提问来源于stack exchange,提问作者Krabs
相关产品推荐
相关产品推荐

