【发布时间】:2018-08-19 20:47:18
【问题描述】:
我正在尝试在 Lambda 上使用 Shapely 设置技能。我得到了错误
module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so'].
Python 2.7 有一个 similar question。我无法使用lambda-packs by ryfeus,因为我使用的是 Python 3.6,但我认为Graeme 描述的 EC2 方法应该可以工作。
所以我使用来自AWS docs 的公共 Amazon Linux AMI 版本启动了一个 EC2 实例
然后我运行了这些命令
$ sudo yum -y update
$ sudo yum -y install python36 python36-virtualenv python36-pip
$ mkdir ~/forlambda
$ cd ~/forlambda
$ virtualenv -p python3 venv
$ source venv/bin/activate
然后安装 Shapely 和我需要的一些其他软件包。
$ sudo yum -y groupinstall "Development Tools"
$ pip install python-dateutil
$ pip install shapely
$ pip install pyproj
$ pip install pyshp
然后我运行了我的技能(在 EC2 实例上),它可以工作了!然后我复制了 venv/lib/python3.6/site-packages 中的文件,加上 myskill.py 并将它们压缩,上传到 Lambda,仍然得到 geos_c 错误,如上所示:(
我已经能够上传我的技能的缩小版本(减去 Shapely,但包括 Lambda 未附带的其他软件包)并且它适用于 Lambda,所以我不认为这是一个错误我正在压缩或上传。
我错过了什么吗?使用“sudo yum install”而不是“pip install”安装开发工具有什么不同吗?
【问题讨论】:
标签: python-3.x amazon-ec2 aws-lambda alexa shapely