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

Python Lambda运行时出现FileNotFoundError:找不到'config'目录问题

解决Lambda中os.chdir("config")的FileNotFoundError问题

首先,你提供的信息完全足够复现和定位问题——错误栈、代码片段、目录存在的描述已经把核心线索都给全了,咱们直接来拆解原因和解决方案:

问题核心原因

Lambda函数的执行环境默认工作目录是/var/task/,但这里的关键是:你本地看到的config目录,不一定正确被打包到了Lambda的代码包根目录下,或者你的相对路径依赖出了问题。

哪怕你本地截图显示目录存在,只要打包时config没有被放在zip包的根层级(也就是解压后对应/var/task/config),os.chdir("config")就会找不到目录。另外,os.chdir是依赖当前工作目录的操作,虽然Lambda默认工作目录是/var/task,但用相对路径本来就不够可靠,很容易因为环境细节变化出问题。

具体解决方案

方案1:改用绝对路径(最推荐)

放弃os.chdir,直接通过脚本的绝对路径拼接目标文件路径,彻底规避工作目录的问题:

import os
import json

def lambda_handler(event, context):
    print(event)
    # 获取当前lambda_function.py所在的绝对目录
    current_dir = os.path.dirname(os.path.abspath(__file__))
    # 拼接secrets.json的完整路径
    secrets_path = os.path.join(current_dir, "config", "secrets.json")
    
    with open(secrets_path, "r") as f:
        loginInfo = json.load(f)
    
    return loginInfo

方案2:确认打包结构并修复

如果你坚持要用os.chdir,请确保你的代码包结构正确:

  • 本地打包时,要把lambda_function.py和config目录放在同一层级,然后用递归命令打包:
    zip -r lambda_deploy.zip lambda_function.py config/
    
  • 上传后,可以在Lambda控制台的"代码"标签页,查看左侧文件浏览器里是否存在config目录——如果看不到,说明打包时没包含进去。

额外排查点

  • 检查你上传的代码包是最新的,有没有可能误传了旧的、缺少config目录的zip包?
  • 虽然概率极低,但可以确认Lambda执行角色是否有读取代码包文件的权限(一般默认权限是足够的)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:07:33