当前位置: 首页 > 知识库问答 >
问题:

AWS lambda python多个文件应用程序不能从另一个导入一个

广献
2023-03-14

我的AWS lambda项目结构如下:

module
  app.py
  b.py

app。py是带有lambda\u处理程序的默认aws lambda函数,它工作正常。我决定把所有繁重的计算都拉出来,用b.pycalc

然后,我将其导入到应用程序。py

from module.b import calc

现在,当我使用samlocalinvoke函数--event-events/event在本地运行它时。json,它会引发一个错误:

{“errorType”:“Runtime.ImportModuleError”,“errorMessage”:“无法导入模块'app':没有名为'module'”的模块”

在我看来,当它准备运行代码时,它将文件移动到其他目录,因此导入中断。为了解决这个问题,我尝试使用相对导入:

from .b import calc

但它也提出了一个错误:

{“errorType”:“Runtime.ImportModuleError”,“errorMessage”:“无法导入模块'app':尝试在没有已知父包的情况下进行相对导入”}

如何在aws lambda上设置多文件python应用程序?


共有2个答案

丌官开宇
2023-03-14

在模块内部使用__init__. py并将你导入到文件包内部,就像导入app.py

冯玮
2023-03-14

这就是我解决这个问题的方法。

首先,您的根文件夹需要如下所示:

lambda_folder
    lambda_function.py // Or your main.py.... this file have the method lambda_handler

现在当我使用多个文件时。。。我总是使用lib文件夹。这样地:

lambda_folder
    lib
        lib1.py
        lib2.py
        lib3.py
    lambda_function.py

重要的

在lib文件夹中,始终需要init。或者你看不到里面的文件。

lambda_folder
    lib
        lib1.py
        lib2.py
        lib3.py
        __init__.py
    lambda_function.py

注意:init.py需要有下划线,但是文本中的stackoverflow不允许我写它们。

例子

lib1.py

def sum(a,b):
    return a+b

lambda_函数。派克

from lib import lib1
import json

def lambda_handler(event, context):
    result = lib.sum(5,4)

    return {
        "statusCode": 200,
        "body": "hi " + result
    }

就这些。

 类似资料:
  • 问题内容: 在将其标记为重复之前, 请阅读我的问题: 我正在尝试从子目录的文件中导入类 并且在我的课程中有()我尝试了什么: 放入main.py: 我收到错误消息: 从文件导入Klasa ImportError:没有名为“文件”的模块 当我尝试使用时: 我收到此错误: tmp = Klasa() NameError:未定义名称“ Klasa” 我在子文件夹中放了一个空格,它仍然不起作用,而我在 :

  • 我的项目目录如下所示: 在我的主要范围内。py,我从文档导入一个函数。py如下: 它工作正常。 如何在中导入相同的东西?我尝试了: 但我有一个错误:

  • 问题内容: 我有2个项目,其中一个包含在另一个构建路径中,两个项目都有自己的应用程序上下文来定义他的bean。 我想管理全局事务,因此我必须在一个应用程序上下文中同时导入这两个事务,但是我没有找到做到这一点的方法。 在不同的项目中可能有2个应用程序上下文,并将其中一个导入另一个。 如果没有可能,那将是最佳解决方案? 我认为成为1中的2个项目。 问题答案: 是的,可以导入;在您的一个appconte

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 问题内容: 如何将变量从一个文件导入到另一个文件? 示例:具有变量以及如何将其传递给? 如何将 所有 变量从一个导入到另一个? 问题答案: 将导入file1中的所有对象和方法

  • 如何将变量从一个文件导入到另一个文件? 示例:具有变量和如何将它们传递到? 如何将所有变量从一个导入到另一个?