【问题标题】:Missing required dependencies ['numpy'] in AWS Lambda functionAWS Lambda 函数中缺少必需的依赖项 ['numpy']
【发布时间】:2019-05-05 06:29:30
【问题描述】:

我想很多人都遇到过同样的问题。我试图找到每一个可能的博客并尝试每一种方法。我已经到了这一点并卡在这里。

我正在使用无服务器框架和 virtualenv。

serverless.yml:

 service: test-pandas
 provider:
   name: aws
   runtime: python2.7
 plugins:
   - serverless-python-requirements
 package:
    exclude:
       - venv/**
       - node_modules/**
 functions:
    hello:
       handler: validation.hello

验证.py:

import pandas as pd
import numpy as np 

def hello(event, context):
    return "hello world"

我正在使用 python 2.7。我已经在 Virtualenv 中运行了这些命令:

virtualenv venv --python=python2
source venv/bin/activate
pip install pandas
pip freeze > requirements.txt
cat requirements.txt

在创建 requirements.txt 之前,错误是“没有名为 pandas 的导入模块”,在我设置 serverless-python-requirements 之后,我得到“缺少必需的依赖项 ['numpy']”。

我错过了什么吗?

【问题讨论】:

  • 你安装了numpy吗?惊讶的 pandas 没有将其作为依赖项安装,但是 ...
  • 是的,Pandas 默认安装了 Numpy。我可以看到两个包。因此对错误感到困惑。

标签: pandas python-2.7 numpy aws-lambda


【解决方案1】:

我使用 Docker 将 Lambda 函数与库一起打包和部署。

在 serverless.yml 中添加以下内容:

custom:
  pythonRequirements:
    dockerizePip: non-linux

确保 Docker 正在您的机器上运行,并使用无服务器命令进行部署。我注意到的另一件事是,在使用 Docker 后,.zip 文件大小几乎减少了原始文件大小的一半。

【讨论】:

  • 如果您已经尝试在不使用此解决方案的情况下进行构建,请确保无服务器在部署时不会重用需求文件的缓存。如果您看到类似 Serverless: Using static cache of requirements found at /Users/vincent/Library/Caches/serverless-python-requirements/2cf433de4980cbe5f2b691456cb28222399a8f03ff9352ad0a6e771186108712_slspyc ... 的内容,请删除缓存文件夹并再次部署。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2017-06-11
相关资源
最近更新 更多