【问题标题】:Is there a way to fix numpy error on lamda aws?有没有办法修复 lambda aws 上的 numpy 错误?
【发布时间】:2020-05-19 23:47:17
【问题描述】:

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

layer=numpy
mkdir -p $layer/python/lib/python3.7/site-packages/
cd $layer/python/lib/python3.7/site-packages/
pip install -t . numpy
cd ../../../../
zip -r $layer.zip .

这里是来自 lambda 的错误:

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

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

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

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

注意:这个错误有很多可能的原因,所以请不要评论 一个关于此的现有问题 - 改为打开一个新问题。

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

这是我的路径结构:

.
└── python
    └── lib
        └── python3.7
            └── site-packages

谢谢

解决方案:

docker pull python:3.7-slim-buster
docker run -it python:3.7-slim-buster bash
cd home

layer=boto3_cv2_pil
mkdir -p $layer/python/lib/python3.7/site-packages/
cd $layer/python/lib/python3.7/site-packages/
pip install -t . boto3 opencv-python Pillow numpy==1.17.3 pytz
cd ../../../../
apt-get update
apt-get install zip -y
zip -r $layer.zip .

docker cp $CONTAINER_ID:/home/boto3_cv2_pil.zip .

【问题讨论】:

    标签: python amazon-web-services numpy


    【解决方案1】:

    对于构建自定义层,我可以推荐使用以下 docker 工具:

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

    How do I create a Lambda layer using a simulated Lambda environment with Docker?

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

    【讨论】:

    • @ambigus9 告诉我进展如何。我成功地使用这个工具用 numpy、pillow、scipy 构建了层。开始可能很难,因为必须设置 docker 等,但从长远来看,这是值得的。
    • 您的解决方案启发了我。谢谢!
    • @ambigus9 没问题。很高兴我能帮上忙。
    【解决方案2】:

    您不需要构建自己的 NumPy 层。它已经由 AWS 提供。查看this 博文。

    【讨论】:

    • 当然,但是,我需要编译更多库:pip install -t . boto3 opencv-python Pillow numpy==1.17.3 pytz,我得到了那个错误。知道如何解决吗?
    • @ambigus9 你能把部署包的文件或目录结构贴出来吗?例如,tree 命令的输出。
    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 2021-08-24
    • 2016-05-02
    • 2019-10-10
    • 1970-01-01
    相关资源
    最近更新 更多