【问题标题】:sklearn not working in aws lambda function. Deployment package issuesklearn 在 aws lambda 函数中不起作用。部署包问题
【发布时间】:2017-05-10 15:58:49
【问题描述】:

我试图解决这个问题已经 4 天了。我已经在本地机器上创建了我的代码。在本地机器上创建的 Lambda 函数运行良好。当我使用 aws creating liberaries wit aws 中提到的库压缩它时。并将 zip 文件夹上传到 S3 存储桶。到这里一切正常。当我在 lambda 函数中使用此链接时出现问题。 lambda 函数没有找到 sklearn 库并返回错误

START RequestId:bf7b2618-34c5-11e7-a8eb-43a949065813 版本:$LATEST 无法导入模块'main':动态模块没有定义模块导出函数(PyInit__check_build)


/var/task/sklearn/check_build 的内容: setup.py _check_build.so __init.pyc init.py setup.pyc


scikit-learn 似乎没有正确构建。

如果你已经从源代码安装了 scikit-learn,请不要忘记 在使用之前构建包:运行python setup.py installmake 在源目录中。

如果您使用过安装程序,请检查它是否适合您的 Python 版本、您的操作系统和您的平台。

到目前为止,我已经尝试了所有可能的方法。当我运行这个命令来构建这个包时

python setup.py 安装或构建

错误出现 Cpython __check_buid 缺失。 已经4天了,我什么都试过了。如果有人知道。请在这里帮助我。在此先感谢您。

【问题讨论】:

标签: python amazon-web-services amazon-s3 scikit-learn aws-lambda


【解决方案1】:

这些问题可能与 psycopg2、pandas、numpy 和其他具有复杂依赖关系的库相同 - 您必须从源代码构建它们,并且不是本地,而是使用 Amazon Linux 实例,或 Amazon Linux docker 映像。 AWS 文档中的步骤甚至提到了它,请查看文档中的第 4 点:

  1. 通过 SSH 连接到 64 位 Amazon Linux 实例。

您可以省略此步骤,并使用一些库(如 requests 或 pytz)在本地执行此操作,但更复杂的库需要 Amazon Linux。

对于您的特定问题,逐步解决方案描述here

【讨论】:

  • 感谢亚当,我尝试了您在逐步解决方案中提到的一个。但在 docker run image 之后无法继续。图像无法找到 build.sh 文件。我以某种方式设法手动生成它。但仍然无法正常工作。你能稍微解释一下这个库的本地创建请求吗?谢谢
  • 对于像requests 这样的库,您只需pip install -t /yourlambdadirectory/ requests 然后压缩它们,上传它们就可以了。对于 pandas 之类的库,您必须找到在 Amazon Linux 上为您预编译它们的人,或者自己做。我自己从来没有这样做过,总是使用已经预编译的。在 [此链接] (github.com/moesy/lambda.service.skeleton) 中,您可以尝试使用相当新的熊猫。它基于 [this answer] (stackoverflow.com/questions/36054976/pandas-aws-lambda)。抱歉,我还没有找到预编译的 sklearn。
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多