Flask应用部署到AWS Elastic Beanstalk时提示文件不存在该如何解决?
问题定位
日志已明确提示缺失路径为/var/app/staging/eb-flask/virt/bin/python,该错误的核心原因是你将本地开发用的virt虚拟环境目录打包进了部署包,Elastic Beanstalk(简称EB)的Python运行平台不需要也无法正常使用你本地的虚拟环境文件:
- 本地虚拟环境内的
python文件通常为软链接,压缩、跨系统解压后软链接会直接失效 - 若你在Windows/macOS环境下开发,本地虚拟环境中的二进制文件和EB实例使用的Linux系统完全不兼容
- EB部署流程会自动识别项目依赖,在服务端独立构建运行所需的虚拟环境,无需提前打包本地虚拟环境文件
修复步骤
- 首先删除项目根目录下的
virt虚拟环境文件夹,不要将其放入部署包 - 激活本地虚拟环境后执行以下命令,生成依赖声明文件:
pip freeze > requirements.txt - 重新打包部署包,注意压缩时直接选中项目根目录下的所有文件打包,不要将外层的
eb-flask文件夹作为zip包的根目录。压缩完成后可自行解压验证:解压后直接展示application.py、requirements.txt等项目文件即为正确结构,若解压后先进入一个eb-flask文件夹才能看到项目文件,就是错误结构。正确zip包根目录结构示例:
├── application.py ├── requirements.txt ├── 其他项目代码/静态资源文件夹 - 使用新的部署包重新上传部署即可解决该问题。
可选排查项
如果按上述步骤操作后仍部署失败,可额外核对两点:
- EB平台选用的Python大版本和你本地开发使用的Python大版本一致(如本地用Python3.9,EB也选Python3.9版本的运行环境)
requirements.txt中没有锁定和平台冲突的依赖版本,若存在冲突可先移除版本号限制重新测试
内容的提问来源于stack exchange,提问作者Morkus
相关产品推荐
相关产品推荐

