AWS Lambda:原始错误是:无法导入名称多阵列

时间:2018-03-05 13:24:49

标签: python numpy aws-lambda serverless-framework

您好我使用lambda aws部署了一个应用程序(使用无服务器框架)。 但是当我运行测试时我收到错误

START RequestId: 5bcf988a-2064-11e8-8d1e-c5a0129510f Version: $LATEST
Unable to import module 'handler': 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: cannot import name multiarray

多次移除 numpy包文件夹并重新安装,但仍然无法正常工作 所以你有解决这个问题的方法吗?

代码:

import sys
import os
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)),'env','Lib','site-packages'))
import numpy as np
import pandas as pd
import boto3
import csv
import psycopg2


def hello(event, context):
    s3 = boto3.resource('s3')
    return "test"

提前谢谢

2 个答案:

答案 0 :(得分:0)

我通过改变环境解决了这个问题。 我不知道python是不可移植的。 我在Windows环境中开发了lambda函数,但lambda通常在AWS中的Linux环境中运行,这就是我的lambda无法正常工作的原因。 所以解决方案是改变环境,使用Linux代替windows

答案 1 :(得分:-1)

我在MACOSX环境上编译了代码,最近又遇到了同样的问题,甚至我将代码放在ec2上并在linux或ubuntu环境中安装了所有依赖项,错误是相同的。 https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html的文档给我的提示是,当前的lambda执行环境是公共Amazon Linux AMI版本(AMI名称:amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2),请注意特定的版本。 AMI,即使您将Amazon Linux用作ec2实例,新旧版本也会造成问题。 因此,在更改ec2实例的版本,在其上重新编译代码并将压缩文件存储在s3之后,AWS lambda便无法成功运行。