我的AWS lambda项目结构如下:
module
app.py
b.py
app。py
是带有lambda\u处理程序的默认aws lambda函数,它工作正常。我决定把所有繁重的计算都拉出来,用
b.py
的calc
。
然后,我将其导入到
应用程序。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应用程序?
在模块内部使用__init__. py
并将你导入到文件包内部,就像导入app.py
这就是我解决这个问题的方法。
首先,您的根文件夹需要如下所示:
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中的所有对象和方法
如何将变量从一个文件导入到另一个文件? 示例:具有变量和如何将它们传递到? 如何将所有变量从一个导入到另一个?