You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.slugignore减小Heroku编译slug体积?无法查看文件

解决Heroku Python机器学习应用Slug过大问题

首先要明确:heroku run bash进入的是运行容器,不是编译Slug的环境,所以你看到的/app大小不代表实际Slug的体积,这是核心误区。下面是具体解决步骤:

一、正确分析Slug内的文件大小

要看到真实的Slug文件分布,需要把Slug下载到本地分析:

  1. 安装Heroku Slug插件(若未安装):
    heroku plugins:install heroku-slugs
    
  2. 下载Slug到本地:
    heroku slug:download -a my-app-name
    
  3. 解压下载的slug.tgz文件,在本地终端执行以下命令查看大小分布:
    du -ha --max-depth 1 ./解压后的目录 | sort -hr
    

二、针对性缩小Slug体积(针对Python ML应用)

1. 精简依赖包

  • 拆分依赖:将开发依赖(如pytest、jupyter、flake8)移到单独的requirements-dev.txt,部署时只安装requirements.txt里的生产依赖。
  • 避免缓存:在依赖安装命令中添加--no-cache-dir,减少缓存文件占用,比如修改requirements.txt的安装逻辑(或通过buildpack配置):
    pip install --no-cache-dir -r requirements.txt
    
  • 用轻量化库:比如只安装CPU版本的PyTorch/TensorFlow(而非完整版),或用polars替代pandas(视项目兼容性而定)。

2. 用.slugignore排除无关文件

创建.slugignore文件(和.gitignore语法一致),添加以下内容排除不必要的文件:

# 开发缓存
*.pyc
__pycache__/
.pytest_cache/
.ipynb_checkpoints/
venv/

# 大型数据/模型(建议移到S3等外部存储)
data/
models/
*.h5
*.pt
*.pkl

# 文档与配置
README.md
LICENSE
docs/
.env

如果必须部署模型文件,优先压缩模型(如用TorchScript量化、TensorFlow Lite转换),或换用更轻量化的模型结构。

3. 清理编译临时文件

创建bin/post_compile脚本,在编译完成后清理临时文件:

#!/usr/bin/env bash
rm -rf /tmp/*
rm -rf /app/.heroku/python/lib/python3.x/site-packages/*.so.dSYM

给脚本添加执行权限:

chmod +x bin/post_compile

将脚本提交到Git,部署时会自动执行清理。

三、验证效果

部署完成后,执行以下命令查看Slug大小:

heroku apps:info -a my-app-name

检查输出中的Slug Size字段,确认是否降到500M以下。

内容的提问来源于stack exchange,提问作者Bluetail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:01:14