首页 > 解决方案 > AWS Lambda:无法导入模块“包/文件”:没有名为“util”的模块

问题描述

我正在努力让模块导入使用 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文件都是空的。

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

标签: pythonaws-lambdapython-3.6

解决方案


感谢上面发送的一些链接以及我自己(和必要的)对如何在 python 中处理导入的研究,我发现了有关不可用模块的问题。

我如何在 Lambda 中调试我的应用程序:我将这行代码附​​加到文件顶部

print("Name is ({})".format(__name__))

util这给了我一个输出,可以帮助我理解如何在模块中导入文件做出有根据的决定。我看到stage1.py文件的输出是packager/stage1. 这使得导入代码的修改很容易。我将stage1.py文件中的导入更改为(使用绝对路径导入——pep 推荐):

from packager.util.helper1 import foo

无论出于何种主观原因,此链接帮助我最了解该过程。


推荐阅读