Amazon Linux2下安装cvxpy时scs的wheel包构建失败如何解决
AWS Lambda cvxpy层构建scs编译错误解决方法
你遇到的scs编译失败报错,核心原因是Amazon Linux2默认环境缺少编译scs所需的系统级编译工具和线性代数依赖库,可通过以下方案解决:
方案一:手动编译修复依赖
- 第一步:安装系统级依赖包,执行命令:
sudo yum install -y gcc gcc-c++ make openblas-devel lapack-devel python3-devel - 第二步:升级Python构建工具链,执行命令:
pip install --upgrade pip setuptools wheel build numpy scipy
完成系统依赖安装后,单独执行pip install scs也可以正常完成安装,不会再出现之前的编译报错。 - 第三步:重新安装cvxpy,如果仍出现PEP 517相关报错,可添加参数跳过构建隔离:
pip install cvxpy --no-build-isolation - 打包层时注意按照Lambda层规范存放依赖,执行安装命令时指定目标路径:
pip install cvxpy -t python/lib/python3.7/site-packages/ --no-build-isolation
打包前可清理冗余文件减小体积,避免超出层的250MB解压大小限制:
find python -name "*.pyc" -delete find python -name "__pycache__" -delete strip --strip-unneeded python/lib/python3.7/site-packages/*/*.so 2>/dev/null
方案二:使用预置Lambda层
不需要手动编译,可直接在AWS Lambda控制台的公共层列表中,搜索适配Python 3.7版本的cvxpy公共层直接导入使用,也可以在Serverless应用仓库中查找对应版本的cvxpy层模板直接部署。
方案三:使用容器镜像部署Lambda函数
如果层的体积限制无法满足cvxpy的需求,可以直接采用容器镜像方式部署Lambda函数,使用官方提供的Amazon Linux2 Python3.7基础镜像,在Dockerfile中安装cvxpy等依赖即可,容器镜像支持最大10GB的体积,无需处理层的大小限制问题。
内容的提问来源于stack exchange,提问作者YuMei
相关产品推荐
相关产品推荐

