3. Python 环境配置:Anaconda、框架选择与化学库安装

环境配置这事,看着琐碎,但搞不好真能卡你好几天。我个人习惯在项目一开始就把这套东西理清楚,后面跑模型、调参数才会顺手。这一章我们就把 Anaconda、PyTorch/TensorFlow、RDKit 和 Open Babel 全装好、验证通过。

说白了,VAE 分子生成依赖三层工具:

  • 底层环境:Python 3.8+ 和包管理器
  • 深度学习引擎:PyTorch 或 TensorFlow
  • 化学信息学工具:RDKit 和 Open Babel

这三层缺一不可,而且版本得互相兼容。我在项目中遇到过好几次因为 RDKit 版本和 PyTorch 不匹配,导致分子指纹提取失败的情况——那会儿排查了整整一个下午。

3.1 Anaconda 安装与环境管理

为什么要用 Anaconda?你想想看,深度学习项目里的依赖往往互相打架。PyTorch 要这个版本的 numpy,RDKit 要那个版本的 boost。Anaconda 的虚拟环境能把它们隔离开,每个项目一套环境,互不影响。

安装步骤

  1. 访问 Anaconda 官网下载 Python 3.9 版本的安装包(我个人推荐 3.9,兼容性最稳)
  2. 安装时勾选「Add Anaconda to my PATH environment variable」——虽然安装界面会提醒你不推荐,但我建议勾上,省事
  3. 安装完成后打开终端,验证一下:
conda --version
python --version

如果你看到版本号,就说明装好了。我个人习惯用 Miniconda 而不是完整版 Anaconda——少装一堆用不到的包,环境更清爽。当然,初学者直接用 Anaconda 也没问题。

配置国内镜像源(国内用户必做,不然下载慢到怀疑人生)

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

创建专用虚拟环境

conda create -n vae_molecule python=3.9
conda activate vae_molecule
小技巧: 每次开始新项目前,记得 conda activate vae_molecule 激活环境。我见过太多人装了半天包,结果装到 base 环境里去了,项目切换时一脸懵。

3.2 深度学习框架选择:PyTorch vs TensorFlow

这个问题几乎每个入门的同学都会问。我的看法很简单:做分子生成,尤其是 VAE 相关的项目,PyTorch 是更主流的选择。

对比维度 PyTorch TensorFlow
上手难度 低,调试友好 中,调试相对复杂
分子生成论文复现 大部分代码是 PyTorch 写的 相对少
RDKit 集成 自然,数据流清晰 需要额外适配
部署生态 较新,工具链在快速完善 成熟,TFServing 很强
动态图 默认动态,易调试 2.x 后默认 Eager,但仍偏静态

在这个课程里,我们以 PyTorch 为主线。为什么?说白了,你出去看几篇 VAE 分子生成的论文,十篇里有八篇用的是 PyTorch。用同样的框架,复现代码、踩坑时找社区帮助都方便。

当然,TensorFlow 也很好。如果你已经在用 TF 做其他项目,完全可以用它来跟完这个课程,核心思想是通用的。

安装 PyTorch

先去 PyTorch 官网(pytorch.org)选你自己的配置(Windows/Linux、CUDA 版本、包管理器),复制命令回来执行。举个例子,CUDA 11.8 环境下的安装命令:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

如果你没有 GPU,或者暂时不想配置 CUDA,可以装 CPU 版本:

pip install torch torchvision torchaudio
验证安装:
python -c "import torch; print(torch.__version__); print('CUDA available:', torch.cuda.is_available())"

如果看到版本号,以及 CUDA available: True(GPU 版)或 False(CPU 版),就说明装好了。

曾经踩过的坑: 我遇到过 PyTorch 和 CUDA 版本不匹配的问题——装的是 CUDA 12 的 PyTorch,但系统里只有 CUDA 11.8 的驱动,结果 torch.cuda.is_available() 永远返回 False。后来我养成了一个习惯:装之前先去 NVIDIA 官网确认驱动版本对应的 CUDA 版本。

3.3 RDKit:化学信息学的瑞士军刀

RDKit 是分子生成的灵魂工具。没有它,你连分子式都解析不了,更别提做 VAE 了。

安装 RDKit(我建议用 conda 装,依赖最完整):

conda install -c conda-forge rdkit

如果 pip 用户:

pip install rdkit-pypi
注意: pip 版的 RDKit 在某些平台上可能缺少一些功能(比如部分指纹算法),我个人强烈建议用 conda 安装。conda-forge 版的 RDKit 经过充分测试,稳定性更好。

验证 RDKit:写一个小脚本测试一下基本功能:

python -c "
from rdkit import Chem
from rdkit.Chem import Draw

# 创建一个苯环分子
mol = Chem.MolFromSmiles('c1ccccc1')
print('分子式:', Chem.MolToSmiles(mol))
print('原子数:', mol.GetNumAtoms())
print('RDKit 版本:', Chem.RDKitVersion)
"

你应该会看到类似这样的输出:

分子式: c1ccccc1
原子数: 6
RDKit 版本: 2023.9.1

3.4 Open Babel:格式转换的万能钥匙

Open Babel 主要用来做分子文件格式转换。虽然 RDKit 也能处理大部分格式,但 Open Babel 在 SDF、MOL2、PDB 等格式之间的转换上仍然是工业级标准。

安装 Open Babel:

conda install -c conda-forge openbabel

验证一下:

obabel --version

如果看到版本信息,比如 Open Babel 3.1.1,说明装好了。

快速测试:把 SMILES 转成 SDF 文件:

echo "c1ccccc1" | obabel -ismi -osdf -O benzene.sdf

这会在当前目录下生成一个 benzene.sdf 文件,里面包含苯环的 3D 结构。

3.5 完整环境验证

最后,我建议你跑一个综合脚本,确认所有工具都能协同工作:

python -c "
import sys
print('Python 版本:', sys.version)

import torch
print('PyTorch 版本:', torch.__version__)
print('CUDA 可用:', torch.cuda.is_available())

from rdkit import Chem
print('RDKit 版本:', Chem.RDKitVersion)

import openbabel
print('Open Babel 版本:', openbabel.__version__)

# 一个简单的分子生成+张量转换测试
mol = Chem.MolFromSmiles('CCO')
smiles = Chem.MolToSmiles(mol)
print('乙醇的 SMILES:', smiles)
print('所有库验证通过!')
"

如果所有版本号都正常打印,没有任何 ImportError,恭喜你——环境搭好了。

常见问题:
  • ImportError: No module named 'rdkit' —— 可能没激活 conda 环境,或者装到了别的环境里
  • torch.cuda.is_available() 返回 False —— 检查 CUDA 驱动和 PyTorch 版本的匹配
  • Open Babel 命令找不到 —— 确认 conda 环境激活后重装

如果你遇到其他问题,先确认是不是在 vae_molecule 环境里操作的。我记得有一次帮同学远程调试,折腾了半小时才发现他一直在 base 环境里装东西……

VAE分子生成环境技术栈 Anaconda / Miniconda (Python 3.9) 虚拟环境管理 · 依赖隔离 · 包管理器 PyTorch (主线) VAE模型构建 · 训练 · 推理 TensorFlow (备选) 兼容方案 · 部署友好 RDKit 分子解析 · 指纹计算 · 结构生成 Open Babel 格式转换 · 标准化 · 批量处理 所有工具在 conda 虚拟环境内统一管理,确保版本兼容

3.6 常见环境问题排雷

这里我把自己几年积累的「踩坑经验」整理成一个速查表,你遇到了可以直接翻:

问题 可能原因 解决方案
conda 命令找不到 没加到 PATH 重新安装,勾选「添加到 PATH」;或用 Anaconda Prompt
pip 安装巨慢 默认连国外源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
torch.cuda.is_available() 为 False CUDA 版本不匹配 / 没装 GPU 版 PyTorch 运行 nvidia-smi 查看驱动版本,去官网选对应命令重装
RDKit 导入报错 依赖的 boost 库冲突 用 conda 卸载重装:conda remove rdkit && conda install -c conda-forge rdkit
Open Babel 命令无法执行 没激活环境 / 环境 PATH 问题 conda activate vae_molecule 后再试;或 conda install -c conda-forge openbabel 重装
个人建议: 如果你刚开始接触这个领域,先把 RDKit 和 Open Babel 的官方文档首页快速浏览一遍。不用全看,重点看「Getting Started」和「Tutorial」部分。这样后面遇到具体问题时,你知道该去哪里查。

嗯,到这里环境配置这块就差不多了。你把这些步骤走一遍,基本上就能得到一个干净的、可用的 VAE 分子生成开发环境。后面我们开始真正动手写代码——用 PyTorch 搭一个最简单的 VAE 模型,然后再结合 RDKit 做分子生成。到时候你会发现,前面花这些时间搭环境,值!