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

时间:2019-10-31 15:50:23

标签: python amazon-web-services aws-lambda virtualenv cvxpy

我正在尝试在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

2 个答案:

答案 0 :(得分:1)

要在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

答案 1 :(得分:0)

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

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

请参考以下链接: