编程语言
首页 > 编程语言> > 是否可以在AWS Lambda环境中正确指向Python Shapely库的LIBGEOS_C?

是否可以在AWS Lambda环境中正确指向Python Shapely库的LIBGEOS_C?

作者:互联网

我正在尝试编写一个AWS python Lambda函数,该函数利用Shapely进行简单的“多边形点”操作.我创建了一个AWS linux EC2实例,安装了Shapely并且有一个工作脚本.然后我从我的EC2实例下载了linux特定的libgeos_c.so.1二进制文件,并将其捆绑(通过无服务器框架)与我的lambda函数存在于同一目录中.但是,一旦我部署脚本将无法执行,因为它会抛出“无法找到库或加载其任何变体…”错误.我甚至试图通过GEOS_LIBRARY_PATH环境变量明确指向libgeos_c.so.1路径无效.这是不可能的部署吗?

这是一个代码片段,用于设置环境变量,然后调用实际导入和利用的辅助脚本.

import sys
import os
import subprocess

here = os.path.dirname(os.path.realpath(__file__))

# Import installed packages (in site-packages)
site_pkgs = os.path.join(here, "venv", "lib", "python2.7", "site-packages") 
sys.path.append(site_pkgs)
import json

def hello(event, context):

    command = "GEOS_LIBRARY_PATH={} python test_geo_worker.py".format(here + "/libgeos_c.so.1")
    foo = subprocess.check_output(command, shell=True)
    print foo

有没有人成功地在lambda中部署过?我的后备计划是回到好的旧postgres / postgis而不是匀称,但我肯定想尝试在dynamo / lambda堆栈中构建它.

解决方法:

有可能的.
尝试按照这些步骤操作,看看问题是否仍然存在.

首先,安装GEOS:

yum install geos-devel.x86_64

然后Shapely:

pip2.7 install shapely

尝试导入Shapely:

python2.7 -c "import shapely"

标签:python,lambda,amazon-web-services,serverless-framework,shapely
来源: https://codeday.me/bug/20190710/1429024.html