尝试在AWS Lambda中使用Pillow时无法导入名称“_imaging”

问题描述 投票:3回答:1

我正在尝试使用PIL创建AWS Lambda函数。因此,我在项目目录中安装了PIL

pip install Pillow -t .

它第一次在本地机器上运行,它造成了

ImportError: cannot import name '_imaging'

我虽然做错了什么并从项目目录中删除了PIPPillow*目录并重新安装了PIL。然后它奏效了。

不幸的是,当我将所有内容打包到ZIP并发布到AWS时,该功能再次开始失败

Traceback (most recent call last):
  File "/var/task/myfile.py", line 9, in lambda_handler
    from PIL import Image
  File "/var/task/PIL/Image.py", line 64, in <module>
    from . import _imaging as core
ImportError: cannot import name '_imaging'

这个错误的确切原因是什么以及如何解决?

以下是我的项目目录中的文件列表:

$ ls
bin                          chardet-3.0.4.dist-info  Pillow-5.2.0.dist-info     ThumbnailEnergent_Lambda.zip
certifi                      idna                     requests                   myfile.py
certifi-2018.4.16.dist-info  idna-2.7.dist-info       requests-2.19.1.dist-info  urllib3
chardet                      PIL                      tests                      urllib3-1.23.dist-info
python amazon-web-services python-imaging-library
1个回答
2
投票

我今天实际上遇到了这个问题,发现我的Lambda运行时语言是python3.6,因为我使用的是从早期项目中复制过的Cloudformation模板。问题是我使用Python 3.7为我的zip文件下载了Pillow,Pillow用Python运行时命名了它的_imaging C模块文件。

为了解决这个问题,我只需要将我的运行时语言从Python 3.6更改为Python 3.7。因此,请确保您的上传脚本和Lambda函数的Python版本完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.