0

当我使用多方法装饰器装饰函数时,我遇到了一个问题,即 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!')
    }

如果我删除装饰器,它就可以工作。出于某种原因,我的函数一装饰就被视为一个模块。我正在使用层来包含多方法,但我认为这不是问题,因为其他装饰器之前已经工作过。

4

1 回答 1

0

上面的问题是由于我使用从 pip 而不是 pip3 安装的多方法引起的。pip 的库有一个单独的 multimethod.py 和init .py 文件。因此,当我的 lambda 函数从 lambda 层导入它时,“从多方法导入多方法”实际上是在导入模块而不是函数。

使用 pip3 安装多方法并将 pip3 版本上传到图层修复了它。

于 2021-10-28T23:38:41.300 回答