我继承了一个膨胀的Django项目,它通过Heroku部署,包括许多大型库(包括numpy,scipy等)。看来以前的开发人员冻结了他的整个虚拟环境,我正在尽力修剪未使用的依赖项。
在需要安装MatPlotlib之后,Heroku给了我一个错误,即slug尺寸太大了。该库本身超过50MB。
remote: -----> Compressing...
remote: ! Compiled slug size: 321M is too large (max is 300M).
remote: ! See: http://devcenter.heroku.com/articles/slug-size
为了使用新功能更新此应用程序,我想在这个应用程序中grep每个依赖项的大小,以便我可以设置一个优先级列表来调查实际使用的。
如何在requirements.txt文件中循环访问依赖项列表并查看每个模块的编译大小?
答案 0 :(得分:2)
假设您已设置虚拟环境并且所有依赖项都在relativize()
中,您只需执行以下操作即可:
site-packages
这是我机器上的输出:
du -sh /path/to/site-packages/* | sort -hr
当然,这并不区分您的依赖项和依赖项的依赖项,或者考虑29M .../site-packages/django
7.0M .../site-packages/pip
6.5M .../site-packages/ckeditor
6.2M .../site-packages/grappelli
5.2M .../site-packages/IPython
...
,但它可能已经足够了。