gpt4 book ai didi

Python 层图像失败 : "Unable to import module ' lambda_function': cannot import name '_imaging' from 'PIL' "

转载 作者:行者123 更新时间:2023-12-03 21:11:34 27 4
gpt4 key购买 nike

我只是想在我的 Python 3.8 Lambda 中使用 PIL。
我正在尝试以下步骤:

  • 基于此存储库:https://github.com/hidekuma/lambda-layers-for-python-runtime
  • cd /mydir 
    git clone https://github.com/hidekuma/lambda-layers-for-python-runtime.git
    cd lambda-layers-for-python-runtime
    mkdir dist
    docker-compose up --build
  • 基于此指导:https://www.splunk.com/en_us/blog/cloud/sharing-code-dependencies-with-aws-lambda-layers.html
  • aws lambda publish-layer-version --layer-name ImageStorageDependencies
    --description "A Python 3.8 runtime with PIL and boto3 installed." --license-info "MIT" --zip-file fileb://output.zip --compatible-runtimes python3.7 python3.8 --region us-east-2
    然后我在 Lamda 配置中选择我的层,但是当我运行此代码时:
    import json
    import boto3
    import io
    from PIL import Image


    def lambda_handler(event, context):
    #etc
    ...我收到错误:
    [ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': cannot import name '_imaging' from 'PIL' 
    我到底哪里错了?!?

    最佳答案

    澄清一下,关于您上面的评论,Pillow 只是 PIL 的重新包装、更新版本,因为 PIL 的原始维护者很久以前就停止了工作。当您 pip install Pillow 时,您仍然将其导入为 PIL。在这种情况下,它们是同一回事。
    回答您的问题,枕头 install directions提到:

    Pillow >= 2.1.0 no longer supports import _imaging. Please use from PIL.Image import core as _imaging instead.


    我不确定您的代码从何处导入 _imaging ,所以我认为你有几个选择:
  • 使用旧版本的 Pillow(2.1.0 之前)
  • 查找您要导入的位置 _imaging并将其替换为更新的 from PIL.Image import core as _imaging
  • 更新到当前版本的 Pillow(请参阅下面我的更新)

  • 第四个选项是手动重定向导入,灵感来自 this题。如果你不能做前三个中的一个,我只会这样做。把它放在你的代码中,在你执行破坏性的导入之前运行。您可能需要稍微调整一下以使其正常工作:
    from PIL.Image import core as _imaging
    import sys
    sys.modules['PIL._imaging'] = _imaging
    以后 from PIL import _imaging现在应该真正导入新的核心。
    更新:
    更新 Pillow 也可以解决问题。在 7.2.0 中,我可以导入 _imaging以旧方式:
    >>> import PIL
    >>> from PIL import _imaging
    >>> print(PIL.__version__)
    7.2.0
    >>> print(_imaging)
    <module 'PIL._imaging' from '...\\lib\\site-packages\\PIL\\_imaging.cp37-win_amd64.pyd'>

    关于Python 层图像失败 : "Unable to import module ' lambda_function': cannot import name '_imaging' from 'PIL' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63400740/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com