我试图在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
实例上构建了我的包,并将其用于部署目的。
答案 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!