AWS Lambda:无法导入模块“包/文件”:没有名为“ util”的模块

时间:2018-11-15 01:19:29

标签: python aws-lambda python-3.6

我正在努力使模块导入以使用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文件均为空。

可悲的是,我发现如果我在本地调用脚本,这将起作用。令人沮丧的是轻描淡写!

1 个答案:

答案 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帮助我最了解了该过程。