Python AWS Lamda因can';t导入lambda_处理程序外部的变量
我在这里检查了之前提出的所有问题,没有找到答案。 我的项目结构如下:Python AWS Lamda因can';t导入lambda_处理程序外部的变量,python,aws-lambda,amazon-sqs,Python,Aws Lambda,Amazon Sqs,我在这里检查了之前提出的所有问题,没有找到答案。 我的项目结构如下: project/ ├── └── lambdas ├── __init__.py ├── lambda_handler_1.py # def main(event, context) ├── lambda_handler_2.py └── my_lib ├── __init__.py. # Here I have `import my_lids.utils \n import my_lids
project/
├──
└── lambdas
├── __init__.py
├── lambda_handler_1.py # def main(event, context)
├── lambda_handler_2.py
└── my_lib
├── __init__.py. # Here I have `import my_lids.utils \n import my_lids.exceptions`
├── exceptions.py
├── utils.py
└── api
├── __init__.py
├── some_api.py # Here I make `from my_lids.utils import my_func` and `from my_lids.exceptions import MyException`
当触发器运行lambda's时,我得到一个错误
Runtime.ImportModuleError: Unable to import module 'lambdas/lambda_handler_1': cannot import name 'my_func' from 'my_lib.errors' (/var/task/my_lib/utils.py)
我不使用lambda中模块utils中的任何函数。我做错了什么?
我将所有代码和需求归档到zip文件中并进行部署。此外,也没有任何\uuuu pycache\uuuu
等
谢谢一个Lambda函数可以包含多个文件 如果仅对该函数使用
utils.py
,则应将其源代码作为该函数的另一个文件
如果是这种情况,则将每个Lambda函数放在其自己的文件夹(而不是单个文件)中,将utils.py添加到要与之一起使用的Lambda的文件夹中。然后使用SAM CLI构建/打包/部署lambda
如果在多个位置使用,则应将其打包为Lambda层
然而,Lambda层是一个很难更新的问题
PS安装SAM ClI时不需要安装Docker,老实说
utils.py
仅在API中使用。我不在任何lambda函数中使用它