环境搭建:把分子数据生态装进你的电脑

说实话,每门课的环境搭建都是最磨人的环节。
我当年做第一个分子图项目时,光装库就折腾了两天。不是版本冲突,就是踩了操作系统兼容的坑。
今天咱一步一步来,争取半小时内搞定。

目标一览:安装 Python 3.8+、PyTorch、DGL(Deep Graph Library)和 RDKit。这四个是 MoleculeNet 教程的「四大金刚」。

为什么是这四位?

你想想看,分子数据要怎么喂给神经网络?
首先,分子不是固定长度的向量——每个分子原子个数不同、化学键连接方式不同。
这时候,DGL 负责把分子变成图结构:原子是节点,化学键是边。
而 RDKit 负责从 SMILES、SDF 等文件里读取分子,并算出各种化学特征。
PyTorch 提供深度学习引擎,DGL 其实是建立在它之上的图神经网络框架。
嗯,这样组合起来,才能把分子数据变成可训练的模型。

第一步:Python 环境

我个人习惯用 Anaconda 来管理 Python 环境。
为啥非要折腾个虚拟环境呢?
因为我曾经在项目里同时用 PyTorch 1.10 和 PyTorch 2.0——两个依赖版本不一样。
直接装在系统 Python 里,等着你的就是「ImportError: 符号找不到」。

创建一个干净的虚拟环境:

conda create -n molecular_net python=3.9
conda activate molecular_net

验证 Python 版本:

python --version
# 输出应该类似:Python 3.9.18

第二步:安装 PyTorch

PyTorch 的安装命令取决于你的 CUDA 版本(如果有 GPU)。
我最开始做分子图时一直用 CPU 跑——数据集规模小的时候,CPU 也扛得住。
不过当你处理几万个分子时,GPU 的优势就出来了。

先检查有没有 GPU:

nvidia-smi

如果能看到 GPU 信息,记下右上角的 CUDA Version。比如 CUDA 11.8 或 12.1。
然后去 PyTorch 官网(但别点,按下面命令装):

# CUDA 11.8(常见版本)
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118

# 纯 CPU 版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cpu
小提示:如果不确定 CUDA 版本,或者想省心,先装 CPU 版。
我踩过最大的坑就是明明装了 CUDA 11.8 的 PyTorch,结果 tensor 还在 CPU 上跑——浪费了一半算力。
验证一下:

python -c "import torch; print(torch.cuda.is_available())"
返回 True 才算 GPU 版装成功了。

第三步:安装 DGL

DGL 是专门处理图数据的库。MolculeNet 的分子图数据加载器就是基于 DGL 写的。
安装命令同样要匹配你的 PyTorch 版本和 CUDA 版本。

我建议这样装:

# 如果是 CUDA 11.8 + PyTorch 2.1.x
pip install dgl -f https://data.dgl.ai/wheels/cu118/repo.html

# 如果是 CPU 版 PyTorch
pip install dgl -f https://data.dgl.ai/wheels/cpu/repo.html
注意:DGL 的版本号必须与 PyTorch 版本严格对应。
我以前随手用了 pip install dgl 默认版本,结果它依赖 PyTorch 1.12,但我装的是 2.0——直接报错「DGL requires PyTorch >= 1.12 and < 2.0」。
所以每次安装前最好先看 DGL 官网 的版本对应表。

安装完成后,验证一下:

python -c "import dgl; print(dgl.__version__)"

第四步:安装 RDKit

RDKit 是化学信息学的瑞士军刀。
它能读 SMILES、算分子指纹、生成 2D 结构图、计算描述符……几乎分子相关的所有操作都靠它。
我个人强烈建议用 Conda 装 RDKit,因为 pip 版经常缺一些 C++ 扩展模块。

conda install -c conda-forge rdkit

如果你执意用 pip:

pip install rdkit-pypi

但说实话,Conda 版更稳定。我曾经在 Mac 上 pip 装 RDKit,结果画分子图的功能死活跑不起来——折腾了两天,最后换 Conda 版秒解决。

验证安装:

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

如果输出 3(乙醇有 3 个重原子),恭喜你,装对了。

第五步:安装辅助工具(可选但推荐)

项目中你可能会用到这些:

pip install numpy pandas matplotlib scikit-learn jupyter

numpy 和 pandas 负责数据整理;
matplotlib 画训练曲线;
scikit-learn 提供简单的评估指标(准确率、F1 等);
Jupyter 嘛,用来边写边跑代码。

我个人的开发流程:先在 Jupyter 里调试数据加载、小模型训练,确认没问题再写成 .py 脚本跑大实验。
Jupyter 对分子可视化也很方便——你可以在 notebook 里直接用 RDKit 的 Draw.MolToImage() 看分子长得啥样。

全部安装完成后的一键验证脚本

把所有库放在一起跑一次,避免以后边用边发现某个库没装好:

import torch
import dgl
import rdkit
import numpy as np
import pandas as pd

print("PyTorch version:", torch.__version__)
print("DGL version:", dgl.__version__)
print("RDKit version:", rdkit.__version__)
print("NumPy version:", np.__version__)
print("Pandas version:", pd.__version__)

# 测试 GPU
if torch.cuda.is_available():
    print("GPU available:", torch.cuda.get_device_name(0))
else:
    print("Running on CPU (no GPU detected)")

# 测试 RDKit 基本功能
from rdkit import Chem
mol = Chem.MolFromSmiles("CCO")  # 乙醇
print("乙醇原子数:", mol.GetNumAtoms())

# 测试 DGL 基本图形
import dgl
g = dgl.graph(([0, 1, 2], [1, 2, 0]))
print("DGL graph created with", g.num_nodes(), "nodes")

print("\n所有环境组件就绪 ✅")
运行结果参考:
PyTorch version: 2.1.0+cu118
DGL version: 1.1.3
RDKit version: 2023.09.1
乙醇原子数: 3
DGL graph created with 3 nodes
所有环境组件就绪 ✅

常见踩坑与解决方案

问题现象 可能原因 解决办法
ImportError: No module named 'dgl' DGL 没装好或安装位置不对 确认激活了正确的 conda 环境,重新安装 dgl
RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA 版本与 PyTorch 不匹配 用 nvidia-smi 查看 CUDA 版本,重装对应 PyTorch
RDKit 报错: Boost.Python.ArgumentError RDKit 版本与 Python 版本冲突 用 conda 重新安装 rdkit,不要用 pip
DGL 报错: DGL requires PyTorch >= 1.12 and < 2.0 DGL 和 PyTorch 版本不对应 先卸载现有的 DGL,再装合适版本
最重要的提醒:
千万别用 sudo pip install!
我有个同事在服务器上 sudo 装了 PyTorch,结果系统 Python 被污染了,所有用户的环境都乱了——最后只能重装操作系统。用 conda 虚拟环境才是最安全的。

知识体系结构

下面是本章涉及的核心概念和依赖关系:

环境搭建核心依赖与流程 Anaconda 虚拟环境 PyTorch 深度学习引擎 DGL 图数据处理 RDKit 化学信息学 NumPy / Pandas 数据处理基础 分子图数据构建与加载 MoleculeNet 教程正式开始 这四个组件缺一不可——环境搭好后,才能处理分子图数据

图中核心流程是:先创建虚拟环境,再依次装好 PyTorch、DGL、RDKit 和辅助库。
这些组件各司其职,最终汇合成分子图数据的处理能力。
嗯,装完上面这些,你的电脑已经做好了跟分子数据打交道的准备。