gpt4 book ai didi

Python 无服务器 (SLS) : Runtime. ImportModuleError: 无法导入模块

转载 作者:行者123 更新时间:2023-12-05 01:39:58 24 4
gpt4 key购买 nike

我正在开展一个项目,该项目使用 AWS CodeBuild 来部署用 Python 编写的无服务器 (SLS) 函数。

部署在代码构建中运行良好。它成功创建了函数,我可以在 Lambda AWS UI 中查看 lambda。每当触发该功能时,我都会收到如下错误:

Runtime.ImportModuleError: Unable to import module 'some/function': attempted relative import with no known parent package

这非常令人沮丧,因为我知道该函数存在于上面列出的目录中。在 CodeBuild 脚本期间,我可以 ls 进入目录并确认它确实存在。该函数在我的 serverless.yml 文件中定义如下:

functions:
file-blaster:
runtime: python3.7
handler: some/function.function_name
events:
- existingS3:
bucket: some_bucket
events:
- s3:ObjectCreated:*
rules:
- prefix: ${opt:stage}/some/prefix

遗憾的是,我没能破解这个。在云中使用 SLS 和 Python 时,有人有过类似的经历吗?

SLS 能够成功构建和部署似乎很奇怪,但 Lambda 本身找不到该函数。

最佳答案

这将是对 Python 导入的较长讨论的简短回答。作为 Python 项目的设计,您可以自己研究相对导入和绝对导入之间的激烈而困惑的斗争。

要点:有必要了解为 SLS 函数导入的 python 的基础 IS 存在 serverless.yml 文件(我想它类似于有一个 main.py 调用在 sls yml 中被引用为“函数”的其他文件)。对于我上面的案例,当我遇到问题时,我没有使用绝对导入来构建导入。我将所有导入都切换为具有绝对路径,因此当我移动包时,它会继续工作。

我得到的错误 Runtime.ImportModuleError: Unable to import module 'some/function': attempted relative import with no known parent package 真的很难描述实际问题。错误应该包括尝试相对导入时未找到 some/function 使用的包,因为这是需要修复的实际问题。

希望有一天这能帮助其他人。如果我可以提供更多我尚未提供的信息,请告诉我。

关于Python 无服务器 (SLS) : Runtime. ImportModuleError: 无法导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com