带有SKLEARN,PANDAS和NUMPY问题的Python部署包?

Tom*_*yer 8 python machine-learning pandas scikit-learn aws-lambda

我是AWS和Python的新手,并尝试使用AWS Lambda函数实现一个简单的ML推荐系统进行自学习.我被包裹在sklearn,numpy和pandas的组合上.如果结合任何两个lib意味着(Pandas和Numpy)或(Numpy和Skype)工作正常并且部署完美.因为我正在使用ML系统,所以我需要sklearn(scipy和pandas和numpy),它们无法工作并在aws lambda测试中得到此错误.到目前为止我所做的:我的部署包来自python3.6 virtualenv,而不是直接来自主机.(已经安装/配置了python3.6,virtualenv和awscli,并且你的lambda函数代码在〜/ lambda_code目录中):

  1. cd ~ (我们将在主目录中构建virtualenv)

  2. virtualenv venv --python=python3.6 (创建虚拟环境)

  3. source venv/bin/activate (激活虚拟环境)

  4. pip install sklearn, pandas, numpy

  5. cp -r ~/venv/lib/python3.6/site-packages/* ~/lambda_code (将所有已安装的软件包复制到lambda_code目录的根级别.这将包含一些不必要的文件,但如果需要,您可以自行删除这些文件)

  6. cd ~/lambda_code

  7. zip -r9 ~/package.zip . (拉上lambda包)

  8. aws lambda update-function-code --function-name my_lambda_function --zip-file fileb://~/package.zip (上传到AWS)

之后得到这个错误:

**"errorMessage": "Unable to import module 'index'"**
Run Code Online (Sandbox Code Playgroud)

START RequestId: 0e9be841-2816-11e8-a8ab-636c0eb502bf Version: $LATEST
Unable to import module 'index': **Missing required dependencies ['numpy']**

END RequestId: 0e9be841-2816-11e8-a8ab-636c0eb502bf
REPORT RequestId: 0e9be841-2816-11e8-a8ab-636c0eb502bf  Duration: 0.90 ms   Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 33 MB  
Run Code Online (Sandbox Code Playgroud)

我也在EC2实例上尝试过这个但是没有成功.我做了谷歌并阅读了多个博客和解决方案,但没有奏效.请帮我解决这个问题.

Yin*_* Li 0

您需要确保所有依赖库和包含函数的 Python 文件都位于一个 zip 文件中,以便它能够检测到正确的依赖项。

因此,本质上,在上传之前,您需要将 Numpy、Panda 和您自己的文件全部放在一个 zip 文件中。还要确保您的代码将本地文件(位于同一解压缩目录中)作为依赖项引用。如果您已经这样做了,问题可能是如何引用您包含的库。将包含的库部署到 Lambda 后,通过获取 AWS 上的正确相对路径,确保您能够将包含的库用作依赖项。