python - 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
文件都是空的。
可悲的是,如果我在本地调用脚本,我发现这是可行的。沮丧是轻描淡写!
解决方案
感谢上面发送的一些链接以及我自己(和必要的)对如何在 python 中处理导入的研究,我发现了有关不可用模块的问题。
我如何在 Lambda 中调试我的应用程序:我将这行代码附加到文件顶部
print("Name is ({})".format(__name__))
util
这给了我一个输出,可以帮助我理解如何在模块中导入文件做出有根据的决定。我看到stage1.py
文件的输出是packager/stage1
. 这使得导入代码的修改很容易。我将stage1.py
文件中的导入更改为(使用绝对路径导入——pep 推荐):
from packager.util.helper1 import foo
无论出于何种主观原因,此链接帮助我最了解该过程。
推荐阅读
- mysql - VS 2017 和 MySQL:将 MySQL.Data 更新到 8.0.11.0 并且我的查询都不起作用
- r - 在ggplot2中按组修改alpha值
- sql - 如何检查可空列的新值是否与旧值不同
- spring - 发生错误时可重复 KStream
- sql-server - 当单元格之一必须接受超过 255 个字符的值时,如何从 SQL Server 在 Excel 中加载数据
- java - 如何扫描和响应用户的输入?
- react-native - 任何带有初始向量的 AES 128 加密的本机库?
- amazon-ec2 - 限制对远程端口的访问
- pandas - 熊猫系列右连接的定义是什么?
- python - Python pxssh 期望模式与“#”不匹配