有没有办法修复 lamda aws 上的 numpy 错误?

Amb*_*us9 7 python numpy amazon-web-services

我正在尝试在 lambda AWS 上导入 numpy 库,步骤如下:

\n\n
layer=numpy\nmkdir -p $layer/python/lib/python3.7/site-packages/\ncd $layer/python/lib/python3.7/site-packages/\npip install -t . numpy\ncd ../../../../\nzip -r $layer.zip .\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是 lambda 的错误:

\n\n
\n

[错误] Runtime.ImportModuleError:无法导入模块\n \'lambda_function\':

\n\n

重要提示:请阅读本文以获取有关如何解决此问题的建议!

\n\n

导入 numpy c 扩展失败。\n - 尝试卸载并重新安装 numpy。\n - 如果您已经这样做,则:\n 1. 检查您是否希望使用“/var/lang/bin 中的 Python3.7” /python3.7",\n 并且您的 PATH 或 PYTHONPATH 中没有可能干扰您尝试使用的 Python 和 numpy 版本“1.17.3”的目录。\n 2. 如果 (1 )看起来不错,您可以在\n https://github.com/numpy/numpy/issues打开一个新问题。请提供以下详细信息:\n - 如何安装 Python\n - 如何安装 numpy\n - 您的操作系统\n - 您是否安装了多个版本的 Python\n - 如果您从源代码构建,则您的编译器版本最好是构建日志

\n\n
    \n
  • 如果您正在使用 numpy git 存储库,请尝试git clean -xdf (删除所有不受版本控制的文件)并重建 numpy。
  • \n
\n\n

注意:此错误有多种可能的原因,因此请不要评论\n与此相关的现有问题 - 请打开一个新问题。

\n\n

原始错误是:没有名为“numpy.core._multiarray_umath”的模块

\n
\n\n

这是我的路径的结构:

\n\n
.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 python\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 python3.7\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 site-packages\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢

\n\n

解决方案:

\n\n
docker pull python:3.7-slim-buster\ndocker run -it python:3.7-slim-buster bash\ncd home\n\nlayer=boto3_cv2_pil\nmkdir -p $layer/python/lib/python3.7/site-packages/\ncd $layer/python/lib/python3.7/site-packages/\npip install -t . boto3 opencv-python Pillow numpy==1.17.3 pytz\ncd ../../../../\napt-get update\napt-get install zip -y\nzip -r $layer.zip .\n\ndocker cp $CONTAINER_ID:/home/boto3_cv2_pil.zip .\n
Run Code Online (Sandbox Code Playgroud)\n

Mar*_*cin 4

为了构建自定义层,我建议使用以下 docker 工具:

AWS官方博客解释了如何使用它:

如何使用 Docker 模拟 Lambda 环境创建 Lambda 层?

根据我的经验,以下答案也很有帮助: