我正在尝试在AWS Lambda函数中运行cvxpy软件包。该软件包不在SDK中,因此,我读到必须将依赖项编译为zip,然后将zip上传到lambda函数中。
我已经做了一些研究,并尝试了下面的链接,但是当我尝试点安装cvxpy时,我会收到错误消息-我在Windows机器上,但是我知道AWS Lambda在Linux上运行。
感谢帮助!
https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/
答案 0 :(得分:1)
要在Windows上安装cvxpy
,它需要c ++生成工具(请参考:https://buildmedia.readthedocs.org/media/pdf/cvxpy/latest/cvxpy.pdf)
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层。 / li>
python/lib/python3.7/site-packages
相同的目录结构,并安装了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 .
答案 1 :(得分:0)
您可以将所有依赖项以及lambda源包装到单个zipfile中并进行部署。这样做,最终将在多个lambda函数中包含其他重复代码。假设,如果您的多个lambda函数需要同一个软件包cvxpy
,则您将不得不为两个函数分别打包两次。
一个更好的选择是尝试Labmda Layers
,将所有依赖项放入一个包中,然后在Lambda中部署一个层。然后将该层附加到您的函数以从那里获取其依赖关系。甚至可以对图层进行版本控制。 :)
请参考以下链接: