Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 无法在aws lambda函数中导入图层_Python 3.x_Amazon Web Services_Aws Lambda - Fatal编程技术网

Python 3.x 无法在aws lambda函数中导入图层

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

我正在用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/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,我在下面添加了我的答案。虽然我投了更高的票,但已经很晚了。我想当时我做了一些变通来解决这个问题。哈哈。无论如何,谢谢。