Django部署Google App Engine遇502错误,已装pymysql却提示模块不存在
问题核心原因
Google App Engine 部署Python类Django应用时,构建流程只会自动安装项目根目录下requirements.txt文件中明确声明的依赖包,完全不会同步你本地机器全局环境已经安装的第三方库。
你贴出的现有requirements.txt清单中全程没有声明pymysql依赖,就算你本地反复执行pip3 install pymysql看到安装成功的提示,远端GAE构建环境在打包应用时根本不知道要安装这个包,最终运行时自然会抛出ModuleNotFoundError。
认知误区澄清
- 本地pip返回的“Requirement already satisfied”提示,仅代表你本地当前Python环境存在该依赖,和GAE远端独立的构建、运行环境没有任何关联:部署时GAE只会上传你项目目录下的代码文件,不会把你本地Python环境的库文件一起打包,两套环境的依赖列表完全隔离,没有自动同步机制。
- GAE Python运行时不会自动扫描代码中的import语句补装缺失依赖,所有需要安装的第三方库必须提前逐行写在
requirements.txt里,少写一项就会在运行时触发对应导入错误。
修复步骤
- 打开项目根目录下的
requirements.txt,在现有依赖列表里补充和你本地环境版本一致的pymysql条目,比如PyMySQL==1.0.2,尽量和本地安装版本保持一致,避免出现版本兼容问题。 - 重新触发GAE部署流程,在构建阶段日志确认pymysql被成功安装后,再访问服务验证运行状态。
- 额外检查
settings.py中pymysql的初始化逻辑是否正确,确保已经写入pymysql.install_as_MySQLdb()语句,避免安装完依赖后Django连接数据库时出现二次报错。
内容的提问来源于stack exchange,提问作者Benjamin Carafa
相关产品推荐
相关产品推荐

