在AWS Glue 4.0中安装rdkit遇setup.py缺失错误的求助
解决AWS Glue 4.0中安装RDKit的问题
你遇到的报错核心原因是:直接压缩RDKit源码文件夹上传S3不符合Glue的安装要求。--additional-python-modules参数仅支持可直接通过pip安装的包格式(如wheel文件、PyPI包名,或包含正确setup.py/pyproject.toml的结构化源码包),而RDKit源码根目录没有统一的配置文件,直接压缩整个源码目录无法被pip识别。
以下是三种可行的解决方案:
方法1:使用预编译的RDKit Wheel包
这是最简便的方法,无需自行编译:
- 选择适配Glue 4.0环境的wheel包:Glue 4.0基于Python 3.10、Amazon Linux 2(x86_64架构),需下载对应版本的RDKit预编译wheel(比如
rdkit-pypi发布的兼容manylinux_2_17_x86_64的版本) - 将下载的wheel文件上传到你的S3桶的指定路径(例如
s3://your-bucket/third-party-libs/rdkit-2023.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl) - 在Glue作业的高级属性中,修改
--additional-python-modules参数为上述S3路径 - 确认Glue作业的IAM角色拥有该S3路径的读取权限
方法2:构建适配Glue环境的自定义RDKit Wheel包
如果预编译wheel不兼容,需在与Glue一致的环境中编译:
- 启动一台Amazon Linux 2的EC2实例,安装编译依赖:
sudo yum install cmake3 boost-devel python3-devel gcc-c++ - 克隆RDKit源码并切换到目标版本分支:
git clone https://github.com/rdkit/rdkit.git && cd rdkit && git checkout 2023_09_5 - 进入RDKit的Python绑定目录:
cd Python - 编译生成wheel包:
python3 setup.py bdist_wheel(编译过程可能需要10-20分钟) - 将
dist目录下生成的wheel包上传到S3,再按方法1配置Glue作业
方法3:使用Glue自定义镜像
如果上述方法仍无法解决,可构建包含RDKit的自定义Glue运行时镜像:
- 基于AWS官方的Glue 4.0镜像(
public.ecr.aws/glue/aws-glue-libs:glue-4.0),在Docker中安装RDKit(可通过pip安装预编译wheel或源码编译) - 将自定义镜像推送到你的ECR仓库
- 创建Glue作业时选择该自定义镜像,作业启动后即可直接使用RDKit
额外注意事项
- Glue的Python运行环境是只读的,无法在作业代码中直接执行
pip install - 确保RDKit版本与Glue的Python版本(3.10)完全兼容
- 若使用S3存储包,需避免路径中包含特殊字符,且IAM角色需具备
s3:GetObject权限
内容的提问来源于stack exchange,提问作者crime-brulee
相关产品推荐
相关产品推荐

