【发布时间】:2016-05-10 14:01:28
【问题描述】:
我正在为我公司的开发人员创建一个工具,该工具将采用 python 项目,将其与 site-packages 的 virtualenv 中的所需模块一起压缩,然后在 AWS Lambda 函数中运行代码。我需要这样做,因为 Lambda 不附带 3rd 方模块,也不会让您使用 pip 安装,所以我必须自己带上它们。问题是代码总量也有250mb的限制,如果我有numpy+pandas,那已经超过了限制。但是,开发人员几乎没有使用这些模块的全部功能,因此相比之下,实际使用的代码量很小。我想要一些东西,它会根据开发人员的项目使用情况,至少去掉一些未使用的代码,或者至少给我足够的信息,让我可以编写一个脚本来自动删除死代码。这是否存在,或者至少部分实现了?
【问题讨论】:
-
这个工具应该如何处理 numpy 的编译部分,包括链接库?
-
好吧,我现在正在做的是将这些模块(包括构建 C 扩展)安装在 EC2 服务器上的
virtualenv中,该服务器具有与 Lambda 服务器几乎相同的操作系统和硬件,然后只需将它们全部从site-packages移出。这适用于单独使用numpy模块。即使该工具可以缩小 .py 文件并移动所有其他文件,这也是一个巨大的好处。 -
快速浏览
numpysitepackages目录,我建议省略或清除标有tests的目录。还要确保您没有py和pyc文件。像ma或fft这样的一些目录可能会消失。但是大多数其他numpy都太相互关联了。scipy,另一方面,如果使用的话,是由独立的包组成的,可以分段使用。 -
我们已经解决了一个依赖 numpy、scipy 和 pandas 的代码的这个问题。这是我们遵循它的方式。 stackoverflow.com/questions/34749806/…
标签: python amazon-web-services numpy optimization lambda