当我用multimethod装饰器修饰一个函数时,lambda抛出了一个"'module‘object is not callable“错误。我创建了一个任意示例来重现此问题。
import json
from multimethod import multimethod
@multimethod
def test(word: str):
print("you called string version", word)
def lambda_handler(event, context):
test("hello")
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}如果我移除装饰器,它就能工作。由于某些原因,我的函数在我修饰它之后就被当作一个模块来处理。我正在使用层来包含multimethod,但我不认为这是问题所在,因为其他装饰器以前已经工作过了。
发布于 2021-10-28 23:38:41
上面的问题是由我使用从pip而不是pip3安装的多方法引起的。来自pip的库有一个单独的multimethod.py和init.py文件。因此,当我的lambda函数从lambda层导入它时,"from multimethod import multimethod“实际上是在导入模块,而不是函数。
使用pip3安装多方法并将pip3版本上传到图层修复了这个问题。
https://stackoverflow.com/questions/69727118
复制相似问题