我是AWS和Python的新手,并尝试使用AWS Lambda函数实现一个简单的ML推荐系统进行自学。我被困在包装上,是 sklearn、numpy 和熊猫的组合。如果结合任何两个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实例上尝试过这个,但没有成功。我做了谷歌并阅读了多个博客和解决方案,但没有奏效。 请帮帮我解决这个问题。
你正在使用python 3.6。 所以 pip3 安装 numpy 应该使用,试一试。
您需要确保所有依赖库和包含函数的 Python 文件都在一个 zip 文件中,以便它检测正确的依赖关系。
因此,从本质上讲,在上传之前,您需要将Numpy,Panda和您自己的文件全部放在一个zip文件中。还要确保代码引用本地文件(位于同一解压缩目录中)作为依赖项。如果您已经这样做了,那么问题可能是您包含的库是如何被引用的。确保在将 AWS 部署到 Lambda 后,通过在 AWS 上获取正确的相对路径,确保您能够将包含的库用作依赖项。
所以就像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
如果您在Windows上运行它(像我一样),则会遇到在不兼容的操作系统上编译库的问题。
您可以使用 Amazon Linux EC2 实例或 Cloud9 开发实例来构建您的 virtualenv,如上所述。
或者,您可以下载本文中讨论的预编译的轮子文件: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-python-package-compatible/
本质上,您需要转到 https://pypi.org 上的项目页面并下载如下所示的文件:
- 对于 Python 2.7:module-name-version-cp27-cp27mu-manylinux1_x86_64.whl
- 对于 Python 3.6:module-name-version-cp36-cp36m-manylinux1_x86_64.whl
然后将 .whl 文件解压缩到项目目录,并将内容与 lambda 代码一起重新压缩。
在 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。