![](/img/trans.png)
[英]AWS Lambda Python function: import module error: module not found
[英]Import Module Error when building a Docker Container with Python for AWS Lambda
我正在嘗試構建一個在 AWS Lambda 上運行 Python 代碼的 Docker 容器。 構建工作正常,但是當我測試我的代碼時,我收到以下錯誤:
{"errorMessage": "Unable to import module 'function': No module named 'utils'", "errorType": "Runtime.ImportModuleError", "stackTrace": []}
我的文件夾中基本上有兩個 python 腳本,function.py 和 utils.py,我從 utils.py 中導入一些函數並在 function.py 中使用它們。
在本地,一切正常,但是當我構建容器並使用以下 curl 命令對其進行測試時,出現上述錯誤。 測試卷曲命令:
curl --request POST \
--url http://localhost:9000/2015-03-31/functions/function/invocations \
--header 'Content-Type: application/json' \
--data '{"Input": 4}'
這是我的碼頭文件:
FROM public.ecr.aws/lambda/python:3.7
WORKDIR /
COPY . .
COPY function.py ${LAMBDA_TASK_ROOT}
COPY requirements.txt .
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD [ "function.lambda_handler" ]
我在相關的 Stackoverflow 問題中讀到的是嘗試以另一種方式從 utils.py 導入函數,我嘗試from utils import *
更改為from .utils import all
,我在我的 Dockerfile 中更改了 WORKDIR,然后我把 utils將文件放在單獨的 utils 文件夾中並嘗試以這種方式導入: from utils.utils import *
。 我也嘗試過在 Python 3.8 中運行代碼。
這是我的文件夾結構:這是我的文件夾結構
有誰知道我做錯了什么?
Dockerfile 語句COPY . .
COPY . .
將所有文件復制到工作目錄,給定您之前的WORKDIR
,是/
。
要解決 Python 導入問題,您需要將 Python 模塊移動到正確的目錄:
COPY utils.py ${LAMBDA_TASK_ROOT}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.