安装 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」开始,根据你的平台和工作流,两条路都很清晰:
我的建议:不同场景选不同路
如果你是新手,或者正在搭建团队的分子生成环境,我建议你无脑选 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 的字样,才算真正装好了。