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

运行AWS Glue作业时遇ImportError: No module named pyRserve问题求助

解决AWS Glue作业中导入pyRserve模块的ImportError问题

问题背景

你在运行AWS Glue ETL作业时尝试导入纯Python模块pyRserve,遇到了ImportError: No module named pyRserve错误。你的作业已经通过--extra-py-files参数指定了存储在S3上的pyRserve.zip包,但依然无法找到模块。

可能的原因及解决方案

1. 检查pyRserve.zip的文件结构

这是最常见的问题之一。Glue需要zip包解压后,模块的根目录直接暴露在zip的顶层,而不是嵌套在子文件夹中。

  • 本地解压你的pyRserve.zip,确认解压后直接看到pyRserve文件夹(包含模块的__init__.py等核心文件),而不是类似pyRserve-0.9.1/pyRserve这样的嵌套结构。
  • 如果结构不对,重新打包:可以用pip将模块下载到本地目录再打包:
    # 下载pyRserve到指定本地目录
    pip install pyRserve -t ./pyRserve_package
    # 进入目录打包所有文件
    cd pyRserve_package
    zip -r pyRserve.zip .
    
    把重新生成的zip上传到S3原路径,再重新运行作业。

2. 验证S3路径权限与正确性

  • 确认--extra-py-files参数中的S3路径完全正确(比如没有拼写错误、bucket名称和路径层级匹配)。
  • 检查你的Glue角色AWSGlueServiceRoleDefault是否拥有读取该S3路径的权限。在IAM控制台中查看角色的权限策略,确保包含类似以下的权限配置:
    {
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::your-bucket-name/jobs/test_trunc/python-libs/pyRserve.zip"
    }
    

3. 尝试使用--additional-python-modules参数(适用于Glue 2.0+)

如果你的Glue作业使用的是2.0及以上版本,可以直接通过--additional-python-modules参数让Glue自动安装pyRserve,无需手动打包上传:

  • 修改作业的DefaultArguments,添加:
    "--additional-python-modules": "pyRserve==0.9.1"
    
    (指定版本可以避免兼容性问题,你可以根据需要调整匹配的版本号)
  • 这种方式会在作业启动时自动从PyPI下载并安装模块,更适合纯Python模块的场景。

4. 排查模块路径是否被正确加载

可以在脚本中添加路径打印,确认Glue是否将你的zip包添加到了Python路径中:

import sys
print("当前Python路径列表:", sys.path)
# 再尝试导入模块
import pyRserve

运行作业后查看日志,如果pyRserve.zip的路径没有出现在sys.path中,说明参数配置可能有问题,或者Glue没有正确识别该参数。

总结

优先检查zip包的结构和S3权限,这两个是导致这类问题的最常见因素。如果是较新版本的Glue,使用--additional-python-modules会更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:37:26