【问题标题】:Python Serverless (SLS): Runtime.ImportModuleError: Unable to import modulePython Serverless (SLS):Runtime.ImportModuleError:无法导入模块
【发布时间】:2019-12-15 15:48:55
【问题描述】:

我正在使用 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-3.x lambda serverless-framework


    【解决方案1】:

    这将是关于 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 使用的包,因为这是需要修复的实际问题。

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

    【讨论】:

    • 哦,现在我清楚地了解了您的问题,并且绝对会对其他人有所帮助。
    【解决方案2】:

    我认为您需要从以下位置更改处理程序属性:

    handler: some/function.function_name
    

    handler: some/function.{lambda handler name}
    

    喜欢,我的文件夹结构是:

    - some
      - function1.py
    

    那么我的模板将是:

    functions:
      file-blaster:
        runtime: python3.7
        handler: some/function1.lambda_handler
    

    更多详情请点击此处https://serverless.com/framework/docs/providers/aws/guide/functions/

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多