amazon-web-services - AWS lambda : "Unable to import module ' app': No module named 'models' "

标签 amazon-web-services docker aws-lambda dockerfile aws-sam

我想使用 aws sam 部署 pytorch 模型。我的文件夹结构如下所示:

├── Dockerfile
├── __init__.py
├── app.py
├── models
│   ├── common.py
│   ├── experimental.py
│   └── yolo.py
├── requirements.txt
└── utils
    ├── autoanchor.py
    ├── datasets.py
    ├── general.py
    ├── google_utils.py
    ├── metrics.py
    ├── plots.py
    └── torch_utils.py

如您所见,我有几个本地依赖项。我的 Dockerfile 如下所示:

FROM public.ecr.aws/lambda/python:3.8

COPY app.py requirements.txt ./
ADD models utils ./

RUN python3.8 -m pip install -r requirements.txt -t .

# Command can be overwritten by providing a different command in the template directly.
CMD ["app.lambda_handler"]

app.py 中的代码从 models 导入模块。不幸的是,这不起作用并产生以下错误:

"errorMessage": "Unable to import module 'app': No module named 'models'"

我还尝试对目录 modelsutils 使用 COPY 而不是 ADD,但它导致同样的错误。我该如何解决这个问题?

最佳答案

您缺少的是,如果您尝试将文件夹加载为包,则必须在 Python 中创建正确的打包。否则你可以一一获取 app.py

中导入的所有文件

创建包的步骤:

  1. 创建文件夹名称models
  2. models文件夹中创建__init__.py文件
  3. 创建其他文件,例如 yolo.pyexperimental.pycommon.py
  4. 然后将所有四个加载到 __init__.py 文件中,如下所示
from common import *
from experimental import *
from yolo import *

  • 然后您可以在 app.py 中使用它,例如 import modelsfrom models import *
  • 注意:将所有文件放在文件夹中不像Python中的包那样工作。

    引用码:https://github.com/aviboy2006/flask-rest-api enter image description here

    关于amazon-web-services - AWS lambda : "Unable to import module ' app': No module named 'models' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67736826/

    相关文章:

    docker - 从kubernetes容器中复制文件

    java - AWS Lambda Java

    amazon-web-services - 如何通过单个项目搜索从亚马逊的产品广告 API 获取所有产品?

    amazon-web-services - 如何在Terraform中解密Windows管理员密码?

    docker - 如何在 docker 容器之间链接二进制文件

    java - AWSLambdaClient 的替代品是什么

    aws-lambda - 如何检测用户何时结束与 Alexa 的交互?

    amazon-web-services - 如何在 Terraform 中为子网创建有效的 CIDR block 值

    Java RestHighLevelClient 与 AWS ElasticSearch

    docker - 最近X个小时未使用的Docker修剪容器