我在AWS Lambda中有一个自定义的Python层,其结构如下:
/python
|_/m_utilities
|_/functions
|_/__init__.py
|_/Defaults.py
|_/Athena.py
|_/parameterizer
|_/classes
|_/__init__.py
|_/AthenaLite.py
|_/BaseParameter.py
|_/__init__.py
|_/misc
字符串
- 参数化器init.py包含
from parameterizer.classes.AthenaLite import athena_parameterizer as athena_lite
lambda处理程序开始于:
from m_utilities.functions.Athena import <various functions>
from m_utilities.parameterizer import athena_lite
型
这个结构在本地按预期工作,我能够导入所有内容,没有任何问题。当我尝试测试lambda时,我得到错误:[ERROR]错误。ImportModuleError:Unable to import module 'parameterizer'
当尝试调试时,我尝试的一件事是编辑lambda处理程序来检查文件夹结构(看起来是正确的),并打印出 m_utilities 包中的模块,看看我的“parameterizer”模块是否存在。
在lambda处理程序中:
try:
from m_utilities.parameterizer import athena_lite
except:
import os.path, pkgutil,m_utilities
pkgpath = os.path.dirname(fp_utilities.__file__)
print([name for _, name, _ in pkgutil.iter_modules([pkgpath])])
型
返回AWS:
['functions', 'messaging', 'parameterizer', 'misc']
型
模块似乎在那里,那么我做错了什么,它无法导入它?
1条答案
按热度按时间vs3odd8k1#
出于某种原因,我不知道为什么,这个结构在AWS中工作:
字符串
我把“parameterizer”模块移到了顶层文件夹中,
from parameterizer import athena_lite
工作了。