3. Python 环境搭建:Anaconda、RDKit、PyTorch 安装与配置

搞分子属性预测,第一件事就是搭环境。你想想,后面所有模型训练、特征工程、分子图构建全得跑在 Python 上,环境乱了,后面的活儿根本干不下去。我个人习惯用 Anaconda 做环境隔离,RDKit 和 PyTorch 分别装进去,互不干扰。这一章我就把整套流程拆开揉碎了讲,保证你照着来一遍就能跑起来。

3.1 为什么一定要用虚拟环境?

我记得刚入行那会儿,图省事直接 pip install 装了一堆包到系统 Python 里。结果有一天项目 A 需要 RDKit 2020.09,项目 B 需要 RDKit 2021.03,两个版本冲突,整个环境崩了。后来我花了一整个下午重装系统 Python……从那儿以后,我每个项目都老老实实建隔离环境。

Anaconda 的 conda create 就是干这个的。它能给每个项目创建一个独立的 Python 解释器和包集合,互不打架。另外,RDKit 官方强烈推荐用 conda 安装,因为它的底层依赖(比如 Boost、NumPy)版本匹配非常麻烦,pip 装容易栽坑。

所以,我们的目标是:

  • 安装 Anaconda(或 Miniconda)
  • 创建分子预测专用的虚拟环境
  • 用 conda 装 RDKit
  • 用 conda 或 pip 装 PyTorch(根据你的 GPU 选版本)
  • 验证每个库能正常 import

整个流程跑通了,后面所有章节的代码你都能本地跑。要是卡在某一步,后面我给了常见问题的避坑指南。

我的建议: 如果你机器上已经装了 Anaconda,先检查版本 conda --version ≥ 4.10。太老的版本有些新功能不支持。另外,硬盘留出至少 5 GB 空间——RDKit 加上 PyTorch 的依赖不小。

3.2 安装 Anaconda 与创建虚拟环境

去 Anaconda 官网下载对应操作系统的安装包(Python 3.10 或 3.9 版本)。安装时记得勾选“Add Anaconda to PATH”(Windows)或者按提示把 conda 加到 shell 里。装好之后,打开终端(或 Anaconda Prompt),先更新一下 conda:

conda update -n base conda
conda config --add channels conda-forge
conda config --set channel_priority strict

这样能保证后面从 conda-forge 装的包是最新且兼容的。然后创建一个新环境,我一般用 Python 3.10:

conda create -n molpred python=3.10 -y

名字 molpred 你可以随便改,但建议别用特殊字符。激活它:

conda activate molpred

激活后,终端前面会出现 (molpred) 字样,说明当前在这个环境里了。以后每次跑项目都要先激活这个环境。

3.3 安装 RDKit

RDKit 是分子指纹、分子图构建的基石。我最早期用 pip 装 RDKit,结果报了一堆“ImportError: libboost_python3.so 找不到”的错误。后来改用 conda,一行命令搞定:

conda install -c conda-forge rdkit -y

这个命令会自动匹配当前 Python 版本、操作系统和 Boost 版本,省去很多头疼的编译问题。安装完后,检查一下:

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

如果不出错,还输出了 <rdkit.Chem.rdchem.Mol object at 0x...>,说明 RDKit 装好了。

我曾经踩过的坑: Windows 上 conda install RDKit 可能因为网络问题超时。我建议用国内镜像源加速,比如 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/。另外,千万不要在系统 Python 里直接 pip install rdkit-pypi ——那个版本非常老,而且只支持 Linux。

3.4 安装 PyTorch

PyTorch 是深度学习模型的主力框架。它的安装取决于你是否有 NVIDIA GPU。先看机器上的 CUDA 版本:

nvidia-smi   # 查看 CUDA 版本(Linux / Windows)

如果没有 GPU 或拿不准,直接用 CPU 版本也够练习用。PyTorch 官网上有个安装选择器,但我一般直接指定版本装:

CPU 版本(通用):

conda install pytorch torchvision torchaudio cpuonly -c pytorch -y

GPU 版本(以 CUDA 11.8 为例):

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y

装好后验证:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

如果 GPU 版本装对了,torch.cuda.is_available() 应该返回 True。CPU 版本返回 False 是正常的。

一个小技巧: 我习惯先把 PyTorch 装好,再装 RDKit。因为 PyTorch 的 CUDA 依赖会锁死一些底层库版本,后装 RDKit 容易冲突。反过来,先装 RDKit 再装 PyTorch 一般没问题。

3.5 环境验证清单

装完后跑一个整合测试,确保所有库能协同工作:

python -c "
from rdkit import Chem
import torch

# 测试 RDKit 分子构建
mol = Chem.MolFromSmiles('CCO')
print('RDKit:', Chem.MolToSmiles(mol))

# 测试 PyTorch 张量
x = torch.randn(3, 4)
print('PyTorch 张量形状:', x.shape)
"

输出应该类似:

RDKit: CCO
PyTorch 张量形状: torch.Size([3, 4])

如果报了错,别慌。下面我把常见问题列出来,你对照着查一下。

问题现象 可能原因 解决办法
conda install 卡在 solving environment channel 优先级设置不当 改回 flexible:conda config --set channel_priority flexible
from rdkit import Chem 报 DLL 错误 conda 环境与系统库冲突 重新用 conda-forge 重装 rdkit,确保没用 pip 混装
torch.cuda.is_available() 返回 False CUDA 版本不匹配 / PyTorch 装了 CPU 版 用 conda list | grep pytorch 确认是否带 cuda 标签,卸载重装对应版本
macOS M1/M2 安装失败 CPU 架构特殊 用 conda install pytorch -c pytorch-nightly 或者装 Miniforge 再装
再次提醒: 同一个环境里,尽量不要混用 conda 和 pip 装同一类包(比如 numpy)。conda 管理二进制依赖更靠谱。如果非要 pip 装某些 conda 没有的包,等 conda 装完所有大件后再 pip install。

3.6 知识体系总览

下面这张图总结了本章的核心结构。你看到每个环节都得走通,后面才能专心写模型。

环境搭建知识体系图 分子属性预测 · 环境搭建流程图 安装 Anaconda 创建虚拟环境 molpred 安装 RDKit (conda-forge) 安装 PyTorch (CPU/GPU) 环境验证清单 ✅ 可以开始实战 📌 关键注意点: • 优先用 conda 装 RDKit 和 PyTorch,避免 pip 混装导致二进制冲突 • 检查 torch.cuda.is_available() 确认 GPU 版本是否生效

这张图从左到右、从上到下很清楚地体现了一个道理:环境是地基,根基不牢后面全废。你按照先装 Anaconda → 创建虚拟环境 → 分别装 RDKit 和 PyTorch → 最后验证的次序走,几乎不会出大错。

3.7 最后聊几句

环境调试是最磨耐心的事,但也是最能帮你理解依赖管理的一步。我当初在 RDKit 和 PyTorch 的 CUDA 版本冲突上卡了三天,后来发现是 conda 的 channel_priority 设成了 strict,改成 flexible 就好了。所以,遇到问题别急着重装,先看看错误信息,多半是版本或通道的问题。

这一章的内容到这里就结束了。你已经拥有了一个干净的、分子预测专用的 Python 环境。后面我们就可以正式开始处理分子数据、构建图神经网络了。