- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Lambda-uploader编写 python lambda 代码并将 zip 移动到 AWS。我创建了一个包含我的 jar 文件和 zip 文件夹结构,如下所示。
我使用的代码来自 AWS 门户并且使用的是 PIL 类。我根据要求将 Pillow 库包含在 Lambda-uploader 中,但是当我通过导入创建的 zip 文件在 Lambda 控制台上创建我的 Lambda 函数时,我收到以下错误消息。任何帮助表示赞赏。
错误:
START RequestId: e4893543-93aa-11e7-b4b9-89453f1042aa Version: $LATEST
Unable to import module 'CreateThumbnail': cannot import name _imaging
END RequestId: e4893543-93aa-11e7-b4b9-89453f1042aa
REPORT RequestId: e4893543-93aa-11e7-b4b9-89453f1042aa Duration: 0.44 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 33 MB
lambda.josn
{
"name": "CreateThumbnail",
"description": "It does things",
"region": "us-east-1",
"runtime": "python2.7",
"handler": "CreateThumbnail.lambda_handler",
"role": "arn:aws:iam::0000000000:role/LambdaTest",
"requirements": ["Pillow"],
"ignore": [
"circle\\.yml$",
"\\.git$",
"/.*\\.pyc$"
],
"timeout": 30,
"memory": 512
}
python 代码:
from __future__ import print_function
import boto3
import os
import sys
import uuid
from PIL import Image
import PIL.Image
s3_client = boto3.client('s3')
def resize_image(image_path, resized_path):
with Image.open(image_path) as image:
image.thumbnail(tuple(x / 2 for x in image.size))
image.save(resized_path)
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
upload_path = '/tmp/resized-{}'.format(key)
s3_client.download_file(bucket, key, download_path)
resize_image(download_path, upload_path)
s3_client.upload_file(upload_path, '{}resized'.format(bucket), key)
最佳答案
我遇到了完全相同的问题,我已经解决了。最后的 tl;dr 版本。
_imaging 是一个动态链接的共享对象库(带有 .so 扩展名)。这大致相当于 Windows DLL 模块的 Linux。您可以在 PIL 文件夹中查看此模块。
问题是这些 .so 文件是针对本地计算机体系结构的编译文件。因此,如果您在 Windows 上执行 pip install Pillow,动态链接库将无法在任何其他操作系统或架构上使用。
AWS lambda 使用 Amazon Linux 执行环境。不是 Ubuntu,是亚马逊 Linux。因此,如果您想在 lambda 上使用动态链接的共享对象库,最好的办法是将所有库安装在类似的环境中。值得庆幸的是,EC2 提供了与 lambda 完全相同的执行环境。所以,我分拆了一个临时的 EC2 实例。通过 SSH/Putty 远程登录并安装所有依赖项。然后我将它与我自己的代码一起压缩并发布到 lambda。我的程序现在运行良好!
长话短说
过程进行到一半时,我遇到了一个 nice blog Matthew Perry 解释了整个过程。
关于python - Lambda- uploader : Unable to import module 'CreateThumbnail' : cannot import name _imaging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46093874/
可以使用 lambda 和函数创建有序对(Lisp 中的缺点),如 Use of lambda for cons/car/cdr definition in SICP 所示。 它也适用于 Python
我正在尝试从另一个调用一个 AWS lambda 并执行 lambda 链接。这样做的理由是 AWS 不提供来自同一个 S3 存储桶的多个触发器。 我创建了一个带有 s3 触发器的 lambda。第一
根据以下源代码,常规 lambda 似乎可以与扩展 lambda 互换。 fun main(args: Array) { val numbers = listOf(1, 2, 3) f
A Tutorial Introduction to the Lambda Calculus 本文介绍乘法函数 The multiplication of two numbers x and y ca
我想弄清楚如何为下面的表达式绘制语法树。首先,这究竟是如何表现的?看样子是以1和2为参数,如果n是 0,它只会返回 m . 另外,有人可以指出解析树的开始,还是一个例子?我一直找不到一个。 最佳答案
在 C++0x 中,我想知道 lambda 函数的类型是什么。具体来说: #include type1 foo(int x){ return [x](int y)->int{return x * y
我在其中一个职位发布中看到了这个问题,它询问什么是 lambda 函数以及它与高阶函数的关系。我已经知道如何使用 lambda 函数,但不太自信地解释它,所以我做了一点谷歌搜索,发现了这个:What
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
Evaluate (((lambda(x y) (lambda (x) (* x y))) 5 6) 10) in Scheme. 我不知道实际上该怎么做! ((lambda (x y) (+ x x
我正在处理 MyCustomType 的实例集合如下: fun runAll(vararg commands: MyCustomType){ commands.forEach { it.myM
Brian 在他对问题 "Are side effects a good thing?" 的论证中的前提很有趣: computers are von-Neumann machines that are
在 Common Lisp 中,如果我希望两个函数共享状态,我将按如下方式执行 let over lambda: (let ((state 1)) (defun inc-state () (in
Evaluate (((lambda(x y) (lambda (x) (* x y))) 5 6) 10) in Scheme. 我不知道实际上该怎么做! ((lambda (x y) (+ x x
作为lambda calculus wiki说: There are several possible ways to define the natural numbers in lambda cal
我有一个数据类,我需要初始化一些 List .我需要获取 JsonArray 的值(我使用的是 Gson)。 我做了这个函数: private fun arrayToList(data: JsonAr
((lambda () )) 的方案中是否有简写 例如,代替 ((lambda () (define x 1) (display x))) 我希望能够做类似的事情 (empty-lam
我在 Java library 中有以下方法: public void setColumnComparator(final int columnIndex, final Comparator colu
我正在研究一个函数来计算国际象棋游戏中棋子的有效移动。 white-pawn-move 函数有效。当我试图将其概括为任一玩家的棋子 (pawn-move) 时,我遇到了非法函数调用。我已经在 repl
考虑这段代码(在 GCC 和 MSVC 上编译): int main() { auto foo = [](auto p){ typedef decltype(p) p_t;
我正在阅读一个在 lambda 内部使用 lambda 的片段,然后我想通过创建一个虚拟函数来测试它,该函数从文件中读取然后返回最大和最小数字。 这是我想出来的 dummy = lambda path
我是一名优秀的程序员,十分优秀!