无法将cvxpy安装到AWS Lambda的virtualenv中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将cvxpy安装到AWS Lambda的virtualenv中相关的知识,希望对你有一定的参考价值。
我正在尝试在AWS Lambda函数中运行cvxpy软件包。该软件包不在SDK中,因此,我读到我必须将依赖项编译为zip,然后将zip上传到lambda函数中。
我已经进行了一些研究,并尝试了下面的链接,但是当我尝试点安装cvxpy时,我收到错误消息-我在Windows机器上,但是我知道AWS Lambda在Linux上运行。
感谢帮助!
https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/
您可以将所有依赖项以及lambda源包装到单个zipfile中并进行部署。这样做,最终将在多个lambda函数中包含其他重复代码。假设,如果您的多个lambda函数需要同一个程序包cvxpy
,则对于两个函数,您将不得不分别打包两次。
相反,更好的选择是尝试Labmda Layers
,在此将所有依赖项放入包中,然后在Lambda中部署一个层。然后将该层附加到您的函数以从那里获取其依赖关系。甚至可以对图层进行版本控制。 :)
请参考以下链接:
https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
https://dev.to/vealkind/getting-started-with-aws-lambda-layers-4ipk
要在Windows上安装cvxpy
,它需要c ++生成工具(请参考:https://buildmedia.readthedocs.org/media/pdf/cvxpy/latest/cvxpy.pdf)
在Windows上:
- 我创建了一个lambda层python目录结构
python/lib/python3.7/site-packages
(请参阅:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html,并将我的pip软件包安装在该site-packages目录中。
pip install cvxpy --target python/lib/python3.7/site-packages
- 然后,我将
python/lib/python3.7/site-packages
压缩为cvxpy_layer.zip并将其上传到S3存储桶(压缩后的文件最大限制仅为50 MB https://docs.aws.amazon.com/lambda/latest/dg/limits.html,以将其附加到我的lambda层。 - 现在,该层已准备就绪,但是lambda无法导入安装在Windows计算机上的软件包。 (请参阅:AWS Lambda - unable to import module 'lambda_function')
在Linux上:
- 我创建了与以前的
python/lib/python3.7/site-packages
相同的目录结构,并安装了cvxpy并将其压缩,如下所示。 - 稍后,我将zip文件上传到S3存储桶并创建了一个新的lambda层。
- 将那个lambda层附加到我的lambda函数中,我很高兴能够解决之前失败的导入问题,并在lambda上运行基本的cvxpy程序。
mkdir -p alley/python/lib/python3.7/site-packages
pip install cvxpy --target alley/python/lib/python3.7/site-packages
cd alley
zip -rqvT cvxpy_layer.zip .
Lambda图层图片:
Lambda函数执行:
以上是关于无法将cvxpy安装到AWS Lambda的virtualenv中的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda -- 无法为 SpaCy 导入 srsly.ujson.ujson
在 pom 中添加硒依赖项后,AWS Lambda Jar 无法压缩