Jak*_*wen 6 python amazon-web-services shapely aws-lambda serverless-framework
我正在尝试编写一个 AWS python Lambda 函数,该函数利用 Shapely 进行简单的“多边形中的点”操作。我启动了一个 AWS linux EC2 实例,安装了 Shapely 并有一个工作脚本。然后,我从 EC2 实例下载了 Linux 特定的 libgeos_c.so.1 二进制文件,并将其(通过无服务器框架)捆绑到与 lambda 函数相同的目录中。但是,一旦我部署,脚本将不会执行,因为它会抛出“无法找到库或加载其任何变体...”错误。我什至尝试通过 GEOS_LIBRARY_PATH 环境变量显式指向 libgeos_c.so.1 路径,但没有效果。这是不可能的部署吗?
这是一个代码片段,它设置环境变量,然后调用实际导入和利用 shapely 的辅助脚本。
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
Run Code Online (Sandbox Code Playgroud)
有人在 lambda 中成功部署过 shapely 吗?我的后备计划是回到旧的 postgres/postgis 而不是 shapely,但我肯定想尝试在 dynamo/lambda 堆栈中构建它。
小智 -1
有可能的。尝试按照这些步骤操作,看看问题是否仍然存在。
首先,安装GEOS:
yum install geos-devel.x86_64
Run Code Online (Sandbox Code Playgroud)
然后身材匀称:
pip2.7 install shapely
Run Code Online (Sandbox Code Playgroud)
尝试导入 Shapely:
python2.7 -c "import shapely"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1139 次 |
| 最近记录: |