AWS Lambda:原始错误是:无法导入名称多数组

AWS Lambda : Original error was: cannot import name multiarray

您好,我使用 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"

提前致谢

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

我在MACOSX环境编译我的代码,这几天遇到了同样的问题,甚至我把我的代码放在ec2上,并在linux或ubuntu环境中安装了所有依赖项,错误是一样的。 https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html docs here给了我提示,当前lambda执行环境是Public Amazon Linux AMI版本(AMI名称:amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 ),请注意AMI的具体版本,即使你使用Amazon Linux作为你的ec2实例,新旧版本都会有问题。 因此,在我更改我的 ec2 实例的版本后,重新编译我的代码并将压缩文件存储在 s3 上,比 AWS lambda 运行 成功。