我正在尝试使用PIL创建AWS Lambda函数。因此,我在项目目录中安装了PIL
pip install Pillow -t .
它第一次在本地机器上运行,它造成了
ImportError: cannot import name '_imaging'
我虽然做错了什么并从项目目录中删除了PIP
和Pillow*
目录并重新安装了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
我今天实际上遇到了这个问题,发现我的Lambda运行时语言是python3.6,因为我使用的是从早期项目中复制过的Cloudformation模板。问题是我使用Python 3.7为我的zip文件下载了Pillow,Pillow用Python运行时命名了它的_imaging C模块文件。
为了解决这个问题,我只需要将我的运行时语言从Python 3.6更改为Python 3.7。因此,请确保您的上传脚本和Lambda函数的Python版本完全相同。