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

AWS Glue 3调用pandas.to_excel提示openpyxl模块不存在如何解决

Glue 3 环境openpyxl依赖加载失败解决方案

问题背景

在Spark 3.1、Python 3、Glue 3的环境下运行Glue脚本,调用pandas的df.to_excel()方法时依赖openpyxl库,运行后抛出ModuleNotFoundError: No module named 'openpyxl'错误。
原有业务代码如下:

import sys
import boto3
import openpyxl
import pandas as pd

client = boto3.client('s3')
obj = client.get_object(Bucket = 'myBucketName', Key = 'myFileName.csv')

df = pd.read_csv(obj['Body'])

df.to_excel("output.xlsx", sheet_name='my-sheet-name')

原有操作的错误点

你之前的打包配置流程存在三处核心错误:

  • Python版本不匹配:Glue 3 对应的Python运行版本为3.7,你本地用Python 3.9.7打包生成的py3.9版本egg包,无法在Glue 3的Python 3.7环境下被识别加载
  • setup.py配置逻辑错误:你编写的setup.py中install_requires参数又指定了openpyxl,形成循环依赖,最终打包出来的文件不包含实际的openpyxl依赖内容
  • 多余操作步骤:不需要执行py setup.py develop命令,该操作是本地开发模式配置,和打包上传到Glue的依赖包无关

正确操作步骤

  1. 优先选择跨版本通用的依赖包:直接下载适配全Python3版本的openpyxl-3.0.7-py2.py3-none-any.whl安装包,无需自己手动打包;如果选择自己打包,必须使用Python 3.7版本的环境执行打包命令
  2. 将下载/打包好的依赖包上传到你有权限访问的S3存储桶中
  3. 调整Glue作业配置:
    • 如果你使用的是Glue Spark作业:除了在Python library path配置项填写依赖包的S3路径外,还需要在作业参数中添加配置--additional-python-modules,值为openpyxl==3.0.7
    • 如果你使用的是Glue Python Shell作业:直接在Python library path配置项填写依赖包的S3路径即可
  4. 保存配置后重新运行作业即可解决依赖缺失问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:09:04