AWS Elastic Beanstalk部署Flask应用安装tensorflow==2.4.0依赖失败如何解决
失败原因
- 内存不足:日志明确抛出
MemoryError错误,TensorFlow 2.4.0单安装包就接近400MB,解压、安装过程需要占用大量运行内存,如果你使用的是Elastic Beanstalk默认的t2.micro/t3.micro这类1GB内存的低规格实例,不足以支撑TensorFlow的安装流程,直接触发内存溢出导致依赖安装失败。 - Python版本不匹配:你声明应用运行环境为Python 3.7,但日志中pip下载的是适配Python 3.8的
tensorflow-2.4.0-cp38-cp38-manylinux2010_x86_64.whl包,说明你创建的Elastic Beanstalk环境实际使用的是Python 3.8 runtime,和你的开发环境版本不一致,即便安装成功后续运行也会出现兼容问题。
解决方法
- 升级EC2实例规格:进入Elastic Beanstalk控制台对应环境的「配置-容量」页面,将实例类型至少更换为t2.small(2GB内存)及以上规格,保证安装TensorFlow时有足够的内存空间。
- 统一Python运行环境:重新创建Elastic Beanstalk环境,选择Python 3.7版本的runtime,和你的开发环境、依赖版本要求对齐,避免后续出现兼容性报错。
- 优化依赖包(可选):如果你的预测场景不需要GPU加速,可以将requirements.txt中的
tensorflow==2.4.0替换为tensorflow-cpu==2.4.0,CPU版TensorFlow安装包体积更小,安装时内存占用更低,能降低部署门槛。 - 配置交换空间(可选):如果不想升级过高配置的实例,可以在项目根目录下创建
.ebextensions/swap.config文件,添加以下配置增加2GB交换空间,补充内存不足的问题:
commands: add_swap: command: | fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo "/swapfile none swap defaults 0 0" >> /etc/fstab test: test ! -f /swapfile
内容的提问来源于stack exchange,提问作者octo
相关产品推荐
相关产品推荐

