Python 3.x 在AWS Lambda上与Python 3一起使用Shapely

Python 3.x 在AWS Lambda上与Python 3一起使用Shapely,python-3.x,amazon-ec2,aws-lambda,alexa,shapely,Python 3.x,Amazon Ec2,Aws Lambda,Alexa,Shapely,我正在尝试在Lambda上使用Shapely建立一种技能。我弄错了 module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']. Python2.7有一个新版本。我不能使用Python3.6,因为我使用的是Python3.6,但我认为所描述的EC2方法应该可以工作 因此,我使用公共AmazonLinuxAMI版本从 然后

我正在尝试在Lambda上使用Shapely建立一种技能。我弄错了

module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so'].
Python2.7有一个新版本。我不能使用Python3.6,因为我使用的是Python3.6,但我认为所描述的EC2方法应该可以工作

因此,我使用公共AmazonLinuxAMI版本从

然后我运行这些命令

$ 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”安装开发工具会有什么不同吗?

出于某种原因,Shapely和Pyproj的pip安装没有最终出现在virtualenv站点包中。从一个新的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

(venv) $ sudo yum -y groupinstall "Development Tools"
(venv) $ pip install python-dateutil
(venv) $ pip install shapely -t ~/forlambda/venv/lib/python3.6/site-packages/
(venv) $ pip install pyproj -t ~/forlambda/venv/lib/python3.6/site-packages/
(venv) $ pip install pyshp
然后压缩了站点包/plus myskill.py的所有内容,上传到Lambda,它就成功了