作者:heqiuhao | 来源:互联网 | 2023-10-10 11:33
篇首语:本文由编程笔记#小编为大家整理,主要介绍了无法将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上:
- 我创建了一个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函数执行: