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 的虚拟环境能把它们隔离开,每个项目一套环境,互不影响。
安装步骤
- 访问 Anaconda 官网下载 Python 3.9 版本的安装包(我个人推荐 3.9,兼容性最稳)
- 安装时勾选「Add Anaconda to my PATH environment variable」——虽然安装界面会提醒你不推荐,但我建议勾上,省事
- 安装完成后打开终端,验证一下:
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
验证 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 环境里装东西……
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 重装 |
嗯,到这里环境配置这块就差不多了。你把这些步骤走一遍,基本上就能得到一个干净的、可用的 VAE 分子生成开发环境。后面我们开始真正动手写代码——用 PyTorch 搭一个最简单的 VAE 模型,然后再结合 RDKit 做分子生成。到时候你会发现,前面花这些时间搭环境,值!