我正在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文件中引用这个函数呢?当我在我的机器上本地运行代码时,它工作得很好。
1条答案
按热度按时间qacovj5a1#
好吧,事实证明这些AWS消息并不是最具描述性的,也不是最有助于找到真正的bug所在。事实证明,我必须做的是递归地遍历这个目录中的每个文件夹,添加一个
__init__.py
文件,使文件夹成为一个包,然后删除所有的相关导入,并将其替换为非常长的,从父包开始的绝对导入。这就成功了!