在Python virtualenv中查找每个已编译模块的大小?

时间:2016-06-27 20:51:46

标签: python django heroku virtualenv

我继承了一个膨胀的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文件中循环访问依赖项列表并查看每个模块的编译大小?

1 个答案:

答案 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 ... ,但它可能已经足够了。