You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CDK Python Layer时遇模块未找到问题求助

问题解决步骤

一、修复导入错误

Lambda Python层的代码需要遵循特定目录结构,同时满足Python包导入规则,按以下步骤调整:

  1. 补充Python包标识文件
    在你的Layer目录lambda/layer/python/logic/下创建空的__init__.py文件,让Python将logic识别为可导入的包。此时完整目录结构应为:
lambda/
├── layer/
│   └── python/
│       └── logic/
│           ├── __init__.py
│           └── logic.py
└── code/
    └── my_lambda_code.py
  1. 调整Lambda代码的导入语句
    根据需求选择两种导入方式之一:
  • 方式1:直接导入函数
    from logic.logic import add
    
    def handler(event, context):
        print("SUM worked: " + str(add(1, 2)))
    
  • 方式2:通过__init__.py导出函数(更简洁)
    在lambda/layer/python/logic/__init__.py中添加内容:
    from .logic import add
    
    然后Lambda代码中可以直接写:
    from logic import add
    
    def handler(event, context):
        print("SUM worked: " + str(add(1, 2)))
    
  1. 验证CDK层路径正确性
    确认CDK代码中AssetCode("./lambda/layer")指向的目录下直接包含python/文件夹——这是Lambda识别Python层的关键结构,路径错误会导致层内容无法被Python的sys.path识别。

二、查看部署后的文件结构

有两种方法可以查看Lambda部署后的实际文件结构:

  1. 控制台下载层文件
    登录AWS Lambda控制台,找到目标函数,在左侧菜单点击「层」,选择你创建的层,点击「下载」按钮,解压下载的ZIP包即可看到层的实际目录结构。

  2. 在Lambda函数中打印目录信息
    修改Lambda代码,添加路径和目录打印逻辑,执行函数后查看CloudWatch日志:

import sys
import os
from logic import add

def handler(event, context):
    # 打印Python的搜索路径
    print("Python sys.path:", sys.path)
    # 打印/opt目录下的内容(层会被解压到这里)
    print("/opt目录内容:", os.listdir("/opt"))
    if os.path.exists("/opt/python"):
        print("/opt/python目录内容:", os.listdir("/opt/python"))
    # 执行原有逻辑
    print("SUM worked: " + str(add(1, 2)))

内容的提问来源于stack exchange,提问作者LoreV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:02:46