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

Ian*_*ice 2 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
Run Code Online (Sandbox Code Playgroud)

为了让这个应用程序更新新功能,我想 grep 这个应用程序中每个依赖项的大小,以便我可以制作一个优先级列表来调查实际使用的那些。

如何循环浏览我的requirements.txt文件中的依赖列表并查看每个模块的编译大小?

Kev*_*nry 5

假设您已经设置了一个虚拟环境并且您的所有依赖项都在 中site-packages,您只需执行以下操作即可接近:

du -sh /path/to/site-packages/* | sort -hr
Run Code Online (Sandbox Code Playgroud)

这是我机器上的输出:

29M     .../site-packages/django
7.0M    .../site-packages/pip
6.5M    .../site-packages/ckeditor
6.2M    .../site-packages/grappelli
5.2M    .../site-packages/IPython
...
Run Code Online (Sandbox Code Playgroud)

当然,这并没有区分你的依赖和你的依赖的依赖,或者考虑到.slugignore,但它可能已经足够好了。