在AWS Lambda Python函数上设置Shapely

时间:2018-01-10 14:51:14

标签: python aws-lambda shapely.geometry

我试图在AWS Lambda上设置Shapely,但总是得到以下错误。

module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so', '/usr/lib/libgeos_c.so'].

在这种情况下,不确定如何构建shapely。在Linux实例上构建了我的包,并将其用于部署目的。

2 个答案:

答案 0 :(得分:3)

如果您希望构建自己的Lambda兼容二进制文件以在部署包中使用,AWS会在此处声明构建它们所需的AMI:

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

我已经使用该特定AMI创建了一个EC2实例,然后使用pip将我需要的软件包安装到目标文件夹-t中。一旦完成,我只需将其作为我的部署包的基础并使用它并且它可以工作。

或者我从以下网址下载:https://github.com/ryfeus/lambda-packs 并复制了我需要的包裹。 (在shapley的情况下,是形状和形状均匀的1.6b4.dist-info目录。

我相信这些只是目前为Python 2.7构建的,我只使用上述AMI为Python 2.7编译了二进制文件。

HTH

答案 1 :(得分:1)

我遇到了同样的问题,并且能够建立一个层以供Lambda使用。我在https://github.com/bearflagrobotics/libgeos-lambda-build处使用Docker构建二进制发行版,将其作为开源软件包编写。您可以将其作为lambda函数的一层,然后运行所需的任何版本的Shapely或Python!