我是AWS& amp;的新手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目录中):
cd ~
(我们将在主目录中构建virtualenv)
virtualenv venv --python=python3.6
(创建虚拟环境)
source venv/bin/activate
(激活虚拟环境)
pip install sklearn, pandas, numpy
cp -r ~/venv/lib/python3.6/site-packages/* ~/lambda_code
(将所有已安装的软件包复制到lambda_code目录的根级别。这将包含一些不必要的文件,但如果需要,您可以自行删除这些文件)
cd ~/lambda_code
zip -r9 ~/package.zip .
(拉上lambda包)
aws lambda update-function-code --function-name my_lambda_function --zip-file fileb://~/package.zip
(上传到AWS)
之后得到此错误:
**"errorMessage": "Unable to import module 'index'"**
和
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
我在EC2实例上也尝试了这个但是没有成功。我做了谷歌并阅读了多个博客和解决方案,但没有奏效。 请帮我解决这个问题。
答案 0 :(得分:1)
所以就像Wai kin chung所说,你需要使用pip3来安装库。
因此要确定哪个python版本是默认版本,您可以输入:
which python
或
python -v
因此,为了使用python3进行安装,您需要输入:
python3 -m pip install sklearn, pandas, numpy --user
完成后,您可以确保使用以下命令安装软件包:
python3 -m pip freeze
这将显示与python模型一起安装的所有python库。 拥有库后,您需要继续常规步骤。当然你首先要删除放在〜/ venv / lib / python3.6 / site-packages /*中的所有内容。
cd ~/lambda_code
zip -r9 ~/package.zip
答案 1 :(得分:0)
您需要确保所有依赖库和包含您的函数的Python文件都在一个zip文件中,以便它检测正确的依赖项。
基本上,在上传之前,您需要将Numpy,Panda和您自己的文件全部放在一个zip文件中。还要确保您的代码引用本地文件(在相同的解压缩目录中)作为依赖项。如果您已经这样做了,那么问题可能就是如何引用您包含的库。确保您可以使用包含的库作为依赖关系,方法是在部署到Lambda后在AWS上获取正确的相对路径。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果像以前那样在Windows上运行它,则会遇到在不兼容的OS上编译库的问题。
您可以使用Amazon Linux EC2实例或Cloud9开发实例来构建您的virtualenv,如上所述。
或者,您可以按照这篇文章中的说明下载预编译的wheel文件: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-python-package-compatible/
基本上,您需要转到https://pypi.org上的项目页面,并下载如下所示的文件:
然后将.whl文件解压缩到您的项目目录,然后将内容与lambda代码一起重新压缩。
答案 4 :(得分:0)
在Ubuntu 18.04上也有类似的问题。
通过使用python3.7
和pip3.7
解决了该问题。
安装pip3.7
或pip3.7 install numpy
之类的软件包时,请务必使用pip3.7 install numpy --user
要在Ubuntu上安装python3.7
和pip3.7
,可以使用deadsnakes/ppa
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
python3.7 /tmp/get-pip.py
此解决方案也应在Ubuntu 16.04上运行。