安装 RDKit:分子处理核心库

RDKit 是什么?说白了,它是分子信息学的瑞士军刀。读分子、写分子、画分子、算指纹、做子结构搜索,几乎你能想到的分子操作,它都包了。我最早碰 RDKit 是在做虚拟筛选项目的时候,那时光装环境就折腾了大半天。现在回头看,其实就两条路——Conda 安装和 PyPI 安装。今天我把两条路都走一遍,坑也帮你标清楚。

核心结论放前面:优先用 Conda 装 RDKit,省心、省时、少报错。PyPI 版本适合快速尝鲜或已有纯 pip 工作流的团队。

Conda 安装:稳扎稳打的主流方案

Conda 安装 RDKit 只有一个命令,但我建议你指定 conda-forge 频道。为什么?因为 conda-forge 上的 RDKit 构建最完整,依赖也都提前编译好了。

conda install -c conda-forge rdkit

如果你网络慢,可以加个镜像源。我个人习惯用清华的镜像,速度能快不少:

conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge rdkit

安装完验证一下:

python -c "from rdkit import Chem; print(Chem.MolFromSmiles('CCO'))"

能正常输出分子对象,就算成了。嗯,这一步其实最容易出问题的是 Python 版本不匹配。RDKit 对 Python 版本比较敏感,我记得有一次在 Python 3.11 上装旧版 RDKit,直接报 ImportError。后来统一用 Conda 管理版本,再没出过这事。

Conda 安装的优点很明显:

  • 二进制包,不用本地编译,安装即用
  • 依赖自动解析,不会出现「装好 RDKit,但 NumPy 版本不对」这种连锁问题
  • 环境隔离彻底,适合生产项目

缺点呢? 包更新比 PyPI 慢一点,新功能可能要等几周才进 conda-forge。还有就是 Conda 本身比 pip 重一些,但为了 RDKit 这种大型依赖,这点代价完全值得。

小技巧:如果你在 Conda 环境里同时装了 PyTorch 或 TensorFlow,建议先装 RDKit,再装深度学习框架,这样依赖冲突的概率更低。我踩过这个坑,顺序调换后世界清净了。

PyPI 安装:轻量灵活的备选方案

PyPI 上 RDKit 的包名叫 rdkit-pypi,不是 rdkit。这个很多人第一次都搞错。如果你直接 pip install rdkit,装的是另一个不相关的小包,那时候你跑任何 RDKit 代码都会 ModuleNotFoundError。我曾经帮同事排查过这个问题,他卡了整整一个下午。

正确的命令是:

pip install rdkit-pypi

安装完后同样可以用那段 SMILES 代码验证。PyPI 版本的优点是发布频率高,新算法、新功能往往先出现在这里。比如 RDKit 2024.09 的一些新描述符,PyPI 比 conda-forge 早了两周多。

但问题也在这里:

  • rdkit-pypi 在部分 Linux 和老版本 macOS 上需要本地编译,编译时间 5-15 分钟不等
  • 如果你的系统缺少 C++ 编译工具链(比如 Windows 上没有装 MSVC),安装会直接失败
  • 依赖管理全靠 pip,容易和其他科学计算库产生版本冲突

那么什么时候用 PyPI 版本?我个人觉得两种场景比较合适:一是你已经在纯 pip 工作流里跑得挺好,不想再引入 Conda;二是你需要尝鲜某个刚发布的功能,等不及 conda-forge 的更新周期。

避坑指南:在 Windows 上,如果你没有安装 Visual Studio Build Tools,pip 安装 rdkit-pypi 时会尝试从源码编译,大概率会报 cl.exe 相关错误。我曾经在一台新配的 Windows 笔记本上试过,折腾了半小时最后还是切回 Conda 了。

直观对比:一张表看清差异

对比维度 Conda 安装 PyPI 安装
包名 rdkit rdkit-pypi
安装方式 二进制包,无需编译 多数平台为二进制,部分需编译
依赖管理 Conda 自动解析,完整性高 pip 管理,偶有版本冲突
版本更新速度 慢 1-3 周 通常第一时间发布
环境隔离 完全隔离,不影响系统 Python 依赖 venv 或 virtualenv
推荐场景 生产环境、团队协作、新手 快速测试、纯 pip 工作流

一句话总结:追求稳定用 Conda,追求速度用 PyPI。但如果你问我个人建议——Conda 版本能帮你省掉至少 80% 的安装问题。

安装方式决策流程

下面这张图帮你快速做决定。从「我要装 RDKit」开始,根据你的平台和工作流,两条路都很清晰:

RDKit 安装方式决策流程 RDKit 安装方式决策流程 我需要安装 RDKit 已有 Conda 环境? 是 否 Conda 安装 conda install -c conda-forge rdkit PyPI 安装 pip install rdkit-pypi ✓ 二进制包 ✓ 依赖自动解析 ✓ 环境隔离彻底 ✓ 省心省力 ⚠ 包名 rdkit-pypi 别搞错 ⚠ Windows 需编译工具链 推荐:优先使用 Conda 安装 无 Conda 环境且仅做快速测试 → 可选 PyPI 💡 避坑提示 Windows + PyPI = 高风险

我的建议:不同场景选不同路

如果你是新手,或者正在搭建团队的分子生成环境,我建议你无脑选 Conda。理由很简单——省时间。我在三个不同的项目里经历过「pip 装一半报错,然后回头配编译环境」的痛苦。后来团队统一用 Conda,这类问题几乎绝迹了。

但如果你已经有一个基于 pip 的 Python 工作流,而且只是临时想跑一跑 RDKit 的某些功能,那 pip install rdkit-pypi 完全够用。我自己在开发一些快速原型时也会用 PyPI 版本,因为省去了切换环境的麻烦。

有一点要特别提醒:不要在一个 Conda 环境里混用 pip 和 conda 来安装 RDKit。我见过有人先 conda 安装了一半,又 pip 升级,最后依赖乱掉,整个环境废掉。选一条路走到底,别来回切换。

最后一个小建议:不管用哪种方式,装完后一定跑一下 RDKit 自带的测试套件,确保所有功能模块都正常工作:

python -m rdkit.test 2>&1 | tail -20

看到类似 OK 或 passed 的字样,才算真正装好了。