如何告诉AWS Lambda如何访问相关文件Python

tkclm6bt  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(141)

我正在AWS Lambda上运行一些Python代码。这是我的文件结构。我正在运行aws_lambda_function模块中的lambda_handler函数。

aws_lambda_function中的代码为:

import json
from server.server_code import process_request

def lambda_handler(event, context):
    response = process_request(event)
    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }

我告诉lambda在这里寻找要运行的代码:

我发现当我注解掉aws_lambda_function中的第2行时,我得到了下面的错误:

这表明我在导入server_code模块时遇到了困难。我尝试了以下每一种方法:
from .server_code import process_request(这会产生与顶层包之外的相对导入相同的错误)
from server_code import process_request(这会产生错误Unable to import module 'server.aws_lambda_function': No module named 'server_code'
我已经阅读了很多关于如何在Python中解决相对导入问题的文章和Stack exchange线程,但是到目前为止,按照他们的说明进行操作并没有带来什么不同。(注意:每次进行更改时,我都会单击“部署”按钮。)
如何让我的处理程序可以从server_code.py文件中引用这个函数呢?当我在我的机器上本地运行代码时,它工作得很好。

qacovj5a

qacovj5a1#

好吧,事实证明这些AWS消息并不是最具描述性的,也不是最有助于找到真正的bug所在。事实证明,我必须做的是递归地遍历这个目录中的每个文件夹,添加一个__init__.py文件,使文件夹成为一个包,然后删除所有的相关导入,并将其替换为非常长的,从父包开始的绝对导入。这就成功了!

相关问题