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

AWS Glue中Gensim模块安装成功却提示找不到的问题求助

问题排查与解决方案

核心原因分析

从日志来看,尽管Glue显示Gensim安装成功,但ModuleNotFoundError说明实际安装的包不完整,或者Python解释器无法定位到该模块。结合你的情况,主要问题出在自定义wheel包的打包不完整,其次可能存在Python环境路径或依赖冲突的影响。


解决方案步骤

1. 重新打包完整的Gensim wheel包

你当前的setup.py仅指定packages=['gensim'],这只会打包根目录下的文件,而Gensim包含大量子模块(如gensim.models、gensim.utils等),这些子模块未被打包,导致安装后无法正常导入。

修改setup.py为:

from setuptools import setup, find_packages

setup(
    name="gensim",
    version="4.1.0",
    packages=find_packages(),  # 自动递归包含所有子包
    install_requires=[
        'Cython', 
        'numpy', 
        'scipy', 
        'smart-open',
        'urllib3<1.26'  # 解决botocore版本冲突
    ]
)

然后在Python3.6环境下重新打包(Glue当前使用Python3.6,避免跨版本打包的兼容性问题):

python setup.py bdist_wheel

将新生成的wheel包重新上传到S3,替换原文件。

2. 确保Glue脚本能正确找到模块路径

如果重新打包后仍出现问题,可在Glue脚本开头手动添加第三方库的安装路径(Glue会将自定义库解压安装到/tmp/glue-python-libs-xxx目录下):

import sys
import os

# 遍历并添加Glue的自定义库路径
for dir_name in os.listdir('/tmp'):
    if dir_name.startswith('glue-python-libs-'):
        lib_path = os.path.join('/tmp', dir_name)
        sys.path.append(lib_path)
        print(f"Added library path: {lib_path}")

# 再导入gensim
import gensim

3. 验证依赖安装完整性

检查Glue日志中是否有依赖安装失败的记录,若存在部分依赖未安装,可将所有依赖包(Cython、numpy等)提前打包成wheel,一并上传到S3的Python library路径中,避免Glue在线下载时出现网络或版本问题。


补充说明

  • 日志中的urllib3版本冲突虽不直接导致Gensim无法导入,但可能破坏依赖环境的稳定性,通过在install_requires中指定urllib3<1.26可解决该冲突。
  • 尽量在与Glue相同的Python版本环境下打包第三方库,避免字节码或依赖版本不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:45:38