无法将cvxpy安装到AWS Lambda的virtualenv中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将cvxpy安装到AWS Lambda的virtualenv中相关的知识,希望对你有一定的参考价值。

我正在尝试在AWS Lambda函数中运行cvxpy软件包。该软件包不在SDK中,因此,我读到我必须将依赖项编译为zip,然后将zip上传到lambda函数中。

我已经进行了一些研究,并尝试了下面的链接,但是当我尝试点安装cvxpy时,我收到错误消息-我在Windows机器上,但是我知道AWS Lambda在Linux上运行。

感谢帮助!

http://i-systems.github.io/HSE545/machine%20learning%20all/cvxpy_install/CVXPY%2BInstallation%2BGuide%2Bfor%2BWindows.html

https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/

https://medium.com/@manivannan_data/import-custom-python-packages-on-aws-lambda-function-5fbac36b40f8

https://www.cvxpy.org/install/index.html

答案

您可以将所有依赖项以及lambda源包装到单个zipfile中并进行部署。这样做,最终将在多个lambda函数中包含其他重复代码。假设,如果您的多个lambda函数需要同一个程序包cvxpy,则对于两个函数,您将不得不分别打包两次。

相反,更好的选择是尝试Labmda Layers,在此将所有依赖项放入包中,然后在Lambda中部署一个层。然后将该层附加到您的函数以从那里获取其依赖关系。甚至可以对图层进行版本控制。 :)

请参考以下链接:

另一答案

要在Windows上安装cvxpy,它需要c ++生成工具(请参考:https://buildmedia.readthedocs.org/media/pdf/cvxpy/latest/cvxpy.pdf

在Windows上:

pip install cvxpy --target python/lib/python3.7/site-packages

在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图层图片:

enter image description here

Lambda函数执行:

enter image description here

以上是关于无法将cvxpy安装到AWS Lambda的virtualenv中的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda -- 无法为 SpaCy 导入 srsly.ujson.ujson

AWS Lambda无法删除Amazon S3对象

AWS Lambda 无法删除 Amazon S3 对象

在 pom 中添加硒依赖项后,AWS Lambda Jar 无法压缩

无法将 s3 与来自 aws lambda 的 ec2 文件夹同步

AWS 事件总线无法将日志写入来自 AWS Lambda 的自定义日志组上的 CloudWatch