" errorMessage":"无法导入模块' lambda_function'"

时间:2018-02-26 09:01:28

标签: lambda

需要使用像numpy,pandas这样的python依赖项在AWS中部署lambda函数。 制作所有的zip文件并使用S3路径执行后发现以下错误

无法导入模块' lambda_function': 导入多阵列numpy扩展模块失败。最 可能你试图导入一个失败的numpy版本。 如果您正在使用numpy git repo,请尝试 setTheme(R.style.ThemeApp_Green); // themApp_green value define style.xml file. (全部删除 不受版本控制的文件)。否则重新安装numpy。

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

1 个答案:

答案 0 :(得分:1)

经过努力,我发现我必须在python3.6 virtualenv 中创建我的部署包,而不是直接从主机创建。我在Ubuntu 16.04 docker镜像中做了以下操作。这假设您已经安装/配置了python3.6,virtualenv和awscli,并且您的lambda函数代码位于~/lambda_code目录中:

1)cd ~(我们将在主目录中构建virtualenv)

2)virtualenv venv --python=python3.6(创建虚拟环境)

3)source venv/bin/activate(激活虚拟环境)

4)pip install 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)

你的lambda函数现在应该可以import numpy没有问题。

如果您想要更开箱即用的解决方案,可以考虑使用无服务器来部署lambda函数。在我找到上述解决方案之前,我遵循指南here并能够在python3.6 lambda函数中成功运行numpy。