我正在努力使模块导入以使用Python 3在AWS lambda中工作。
我的文件结构如下:
package:
stage1.py
__init__.py
util:
helper1.py
__init__.py
helper1.py
是一个简单的util类:
def foo():
print("yes")
在stage1.py
中,以下几行会导致Lambda在启动时引发错误:
from util.helper1 import foo
foo()
Unable to import module 'package/stage1': No module named 'util'
两个__init__.py
文件均为空。
可悲的是,我发现如果我在本地调用脚本,这将起作用。令人沮丧的是轻描淡写!
答案 0 :(得分:1)
感谢上面发送的一些链接以及我自己的(必要的)研究如何在python中处理导入,我发现了有关不可用模块的问题。
我如何在Lambda中调试应用程序: 我将这行代码附加到文件顶部
print("Name is ({})".format(__name__))
这给了我一个输出,可以帮助我理解如何在util
模块中导入文件的明智决定。我看到stage1.py
文件的输出是packager/stage1
。这使得导入代码修改变得容易。
我将stage1.py
文件中的导入更改为(使用绝对路径导入-pep建议):
from packager.util.helper1 import foo
出于任何主观原因,this link帮助我最了解了该过程。