slugsize 未满时 Heroku slugsize 错误 使用命令安装插件gc清除缓存

问题描述

Heroku 一直拒绝我的构建说:

Compiled slug size: 820.1M is too large (max is 500M).

但是,当我检查 slugsizing 时,我得到的是:

$ du -sh *
1.0K    procfile
8.0K    __pycache__
20K     data_prep
4.0K    handler.py
44M     model
20K     parameters
4.0K    requirements.txt
1.0K    runtime.txt

这些文件的总和不是 820.1M。我什至创建了一个新的 python 3.7 conda env 并使用 pip 只安装了 4 个包:Numpy、Pandas、Flask 和 Geopy。即便如此,结果也不会改变。

这是我的所有要求:

backcall==0.2.0
certifi==2020.12.5
click==7.1.2
cmdstanpy==0.9.5
colorama==0.4.4
convertdate==2.3.0
decorator==5.0.6
ephem==3.7.7.1
Flask==1.1.2
geographiclib==1.50
geopy==2.1.0
hijri-converter==2.1.1
holidays==0.10.5.2
ipykernel==5.5.3
ipython==7.22.0
ipython-genutils==0.2.0
itsdangerous==1.1.0
jedi==0.18.0
Jinja2==2.11.3
jupyter-client==6.1.12
jupyter-core==4.7.1
korean-lunar-calendar==0.2.1
LunarCalendar==0.0.9
MarkupSafe==1.1.1
numpy==1.20.2
pandas==1.2.4
parso==0.8.2
pickleshare==0.7.5
pip==21.0.1
prompt-toolkit==3.0.18
Pygments==2.8.1
PyMeeus==0.3.7
pystan==2.19.1.1
python-dateutil==2.8.1
pytz==2021.1
pyzmq==22.0.3
setuptools==52.0.0
setuptools-git==1.2
six==1.15.0
tornado==6.1
traitlets==5.0.5
wcwidth==0.2.5
Werkzeug==1.0.1
wheel==0.36.2
wincertstore==0.2

有人可以帮我吗?

解决方法

  • 添加 .slugignore 以忽略无用的文件。 _pycache_ 在这里可以忽略。
  • 可能在您添加 .slugignore 文件之前,您已将一些大文件添加到 git 存储库中,现在它们位于 slug 缓存中或作为 git refs。

您可以使用 heroku-repo 插件删除缓存

使用命令安装插件

$ heroku plugins:install heroku-repo

gc

$ heroku repo:gc -a appname

这将针对应用程序存储库运行 git gc --aggressive。这是在应用程序的运行进程中完成的。

清除缓存

$ heroku repo:purge_cache -a appname

这将删除存储在存储库中的构建缓存的内容。这是在应用程序的运行进程中完成的。

完成这些步骤后,您可以将代码推送到 Heroku

如果它不起作用,那么您的 requirements.txt 文件可能很大,以至于超过了 slug 大小限制。