(Python)从Lambda层导入代码到Lambda函数一直失败



我有一个Lambda层,其中包括我的共享代码(数据模型)和pip包。我想把它导入到Lambda函数中并使用它。我能够添加Lambda层,使用pip包没有任何问题,但当我试图从这个公共层导入模型时。我一直得到以下错误:

'errorMessage': "Unable to import module 'app': attempted relative import beyond top-level package"

我认为这与层或函数的文件夹结构有关(更可能)。我遵循Lambda层的约定。

下面是我的图层的文件夹结构。

├── LICENSE
├── README.md
├── __init__.py
├── python
│   ├── lib
│   │   └── python3.9
│   │       └── site-packages
│   ├── model
│   │   ├── __init__.py
│   │   ├── a.py
│   │   ├── b.py
├── requirements.txt
├── samconfig.toml
└── template.yaml
下面是Lambda函数的结构:
├── README.md
├── __init__.py
├── events
│   └── event.json
├── openapi.yml
├── requirements.txt
├── samconfig.toml
├── src
│   ├── __init__.py
│   ├── app.py
│   ├── db.py
│   ├── service.py
├── template.yaml

我要做的是导入例如a.py从db.py中的model文件夹中,例如:

from model import a

但是它会导致我提到的错误:

'errorMessage': "Unable to import module 'app': attempted relative import beyond top-level package", 'errorType': 'Runtime.ImportModuleError'

已解决:显然不可能从这样的文件夹导入。我已经删除了模型文件夹,并在python目录下创建了一个新文件,比如models.py,复制并粘贴了我所有的模型到这个文件中。

现在以:import A from models.py works的形式导入模型。

一个可以工作的解决方案是将我的模型放在单独的文件中,但将它们全部导入到models.py文件中,并从函数本身导入。

最新更新