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

AWS Glue ETL任务报错:找不到data_transformations_app模块

AWS Glue任务ModuleNotFoundError排查方案

针对你遇到的ModuleNotFoundError: No module named 'data_transformations_app'问题,按以下步骤排查:

  • 检查压缩包目录结构
    解压你上传到S3的压缩包,确认结构符合要求:

    • 如果用from data_transformations_app import main,压缩包根目录必须有data_transformations_app文件夹,里面包含__init__.py和main.py(__init__.py可以是空文件,但必须存在,标记这是一个Python包)。
    • 如果用import main,压缩包根目录要直接有main.py,不能嵌套在子文件夹里。
      很多时候报错是因为压缩时把整个父文件夹打包了,导致解压后代码嵌套在多层目录下,Glue找不到对应的模块。
  • 核对Glue任务的依赖配置
    确认你在任务配置里选对了依赖类型:

    • Python代码依赖应该上传为.zip或.egg包,配置在Python library path中,而不是放到Dependent jars(这个是给Java/Scala依赖用的)。如果错误地把Python压缩包放到了Jar路径,Glue不会将其加入Python的搜索路径,自然找不到模块。
  • 添加调试代码验证路径
    在Glue任务的主代码里加入以下调试代码,打印Python搜索路径和解压后的文件结构,定位问题:

    import sys
    import os
    
    # 打印Python搜索路径
    print("Python搜索路径:", sys.path)
    # 打印临时目录内容(Glue通常会把依赖解压到/tmp下)
    print("/tmp目录内容:", os.listdir('/tmp'))
    # 打印当前工作目录
    print("当前工作目录:", os.getcwd())
    

    运行任务后查看日志,就能知道解压后的模块文件是否在Python能搜索到的路径里。

  • 检查大小写和权限

    • Linux环境和S3都是大小写敏感的,确保main.py、包文件夹名和你的导入语句大小写完全一致(比如不能文件名是Main.py但导入main)。
    • 虽然日志显示已下载,但仍要确认Glue执行角色有S3:GetObject权限到该压缩包的S3路径,同时压缩包本身的访问权限允许Glue角色读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:43:15