Python 3.x 无法在aws lambda函数中导入图层
我正在用python3.6开发一个lambda函数。它使用pytesseract库将图像转换为文本。我用下面的文件夹结构创建了图层Python 3.x 无法在aws lambda函数中导入图层,python-3.x,amazon-web-services,aws-lambda,Python 3.x,Amazon Web Services,Aws Lambda,我正在用python3.6开发一个lambda函数。它使用pytesseract库将图像转换为文本。我用下面的文件夹结构创建了图层 python/lib/python3.6/site-packages/PIL python/lib/python3.6/site-packages/Pillow-6.2.1.dist-info python/lib/python3.6/site-packages/pytesseract python/lib/python3.6/site-packages/pytes
python/lib/python3.6/site-packages/PIL
python/lib/python3.6/site-packages/Pillow-6.2.1.dist-info
python/lib/python3.6/site-packages/pytesseract
python/lib/python3.6/site-packages/pytesseract-0.3.1.dist-info
压缩“python”文件夹(如上所示)并上传到AWS中的层
我的lambda函数代码如下。我的代码是python3.6
from PIL import Image
import pytesseract
import json
def lambda_handler(event, context):
print(pytesseract.image_to_string(Image.open('image002.jpg')))
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
但当我运行代码时,我会发现下面的错误
Unable to import module 'lambda_function': cannot import name '_imaging'
此错误是因为找不到枕头库(PIL)。但它已包含在site packages文件夹中。我相信会有一些错误的文件夹结构的层
我已经尝试了以下链接中的文件夹结构,但没有成功:
在pip安装中使用--target选项下载库PIL,并将该库文件放在lambda zip文件中,然后将其上载
pip安装——目标驱动器/位置PIL
此解决方案不使用层。在pip安装中使用--target选项下载库PIL,并将该库文件放在lambda zip文件中,然后将其上载
pip安装——目标驱动器/位置PIL
此解决方案不使用层。经过长期研究,我发现PIL库在内部使用C代码,而lambda function for python环境不直接支持C代码,因此我无法在该函数中导入PIL。正确的解决方案是使用ECS并部署我自己的Docker映像来执行此类操作。经过长时间的研究,我发现PIL库在内部使用C代码,而lambda function for python环境不直接支持C代码,因此我无法在该函数中导入PIL。正确的解决方案是使用ECS并部署我自己的Docker映像来执行此类操作。我最近也尝试了这种结构,但仍然存在相同的错误。请参阅此链接中的“我的文件夹结构”屏幕截图:那么此错误不是因为PIL包。它显示-
无法导入模块lambda\u函数
。lambda配置中可能存在错误。由于存在错误,因此“无法导入模块lambda_函数”无法导入名称\u图像“”。整个错误消息是这样的,我最近也尝试了这种结构,仍然是相同的错误。请参阅此链接中的“我的文件夹结构”屏幕截图:那么此错误不是因为PIL包。它显示-无法导入模块lambda\u函数
。lambda配置中可能存在错误。由于存在错误,因此“无法导入模块lambda_函数”无法导入名称\u图像“”。整个错误消息都是这样的,您找到解决方案了吗?我也面临同样的问题@HarshIT@Jyotirmay,我在下面添加了我的答案。虽然我投了更高的票,但已经很晚了。我想当时我做了一些变通来解决这个问题。哈哈。不管怎样,谢谢。你有什么解决办法吗?我也面临同样的问题@HarshIT@Jyotirmay,我在下面添加了我的答案。虽然我投了更高的票,但已经很晚了。我想当时我做了一些变通来解决这个问题。哈哈。无论如何,谢谢。