[英]How to tell AWS Lambda how to access relative files Python
我正在嘗試讓一些 Python 代碼在 AWS Lambda 上運行。這是我的文件結構。 我正在嘗試在aws_lambda_function
模塊中運行lambda_handler
function。
aws_lambda_function
中的代碼是:
import json
from server.server_code import process_request
def lambda_handler(event, context):
response = process_request(event)
return {
'statusCode': 200,
'body': json.dumps(response)
}
我告訴 lambda 尋找要在此處運行的代碼:
我發現當我從 aws_lambda_function 注釋掉第 2 行時,我得到以下錯誤:
這向我表明,我在嘗試導入 server_code 模塊時遇到了困難。 我嘗試了以下各項:
from.server_code import process_request
(這會產生與頂級包之外的相對導入相同的錯誤)
from server_code import process_request
(這會產生錯誤Unable to import module 'server.aws_lambda_function': No module named 'server_code'
)
我在 Python 中閱讀了很多關於如何解決這個相對導入問題的文章和 Stack 交換線程,但按照他們的說明到目前為止並沒有什么不同。 (注意:我每次進行更改時都單擊“部署”按鈕。)
關於如何使我的處理程序可以從 server_code.py 文件中引用此 function 的任何想法? 當我在我的機器上本地運行代碼時,它工作正常。
好吧,事實證明,這些 AWS 消息並不是最具描述性或有助於查找實際錯誤所在的位置。 事實證明,我必須做的是通過遞歸遍歷此目錄中的每個文件夾到 go,添加一個__init__.py
文件使文件夾成為 package,然后刪除所有相對導入並用非常長的絕對導入替換它們開始與父母 package 一起。成功了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.