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



我是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 目录中):

  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'"**

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.7pip3.7解决了该问题。

安装软件包时,使用pip3.7很重要,例如pip3.7 install numpypip3.7 install numpy --user

要在 Ubuntu 上安装python3.7pip3.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。

最新更新