如何在Amazon Linux2的EC2实例上为Flask应用安装带--no-cache-dir的tensorflow
问题核心原因
AWS EC2默认部署流程执行pip install -r requirements.txt时会开启缓存机制,TensorFlow安装包体积大,缓存过程会占用大量内存,触发小配置实例的内存溢出错误。requirements.txt原生不支持直接配置全局pip参数,可通过以下几种方案解决:
可行解决方案
方案1:单包指定无缓存安装(pip 19.0+支持)
直接在requirements.txt的TensorFlow依赖行末尾追加--no-cache-dir参数即可,示例写法:
# requirements.txt 内容示例 flask==2.3.3 gunicorn==21.2.0 tensorflow==2.15.0 --no-cache-dir
该语法仅对当前行的依赖生效,不会影响其他包的安装逻辑。
方案2:全局配置pip默认禁用缓存
如果你的部署环境pip版本低于19.0不支持单包参数,可以通过配置文件全局开启无缓存安装:
- 方式A:在项目根目录新建
pip.conf文件,写入以下内容:
部署时pip会自动读取该配置,所有依赖安装全程不使用缓存。[global] no-cache-dir = true - 方式B:如果使用AWS Elastic Beanstalk 进行门户部署,在项目根目录新建
.ebextensions/pip.config配置文件,写入以下内容自定义安装命令:container_commands: 01_upgrade_pip: command: "source /var/app/venv/*/bin/activate && pip install --upgrade pip" 02_install_deps: command: "source /var/app/venv/*/bin/activate && pip install -r requirements.txt --no-cache-dir"
方案3:降低安装包内存占用
如果实例配置低于1G内存,建议直接替换完整版TensorFlow为轻量CPU版本,进一步降低安装时的内存消耗:
# 替换requirements.txt中原有的tensorflow依赖 tensorflow-cpu==2.15.0 --no-cache-dir
内容的提问来源于stack exchange,提问作者Mohammed AZIM
相关产品推荐
相关产品推荐

