第4章 Python环境搭建:Anaconda、Jupyter Lab、虚拟环境创建与依赖包管理
做ADMET分析,环境搭建是第一道坎。很多人急着跑代码,结果装包装到崩溃,版本冲突搞到心态炸裂。我见过太多同学卡在"import pandas失败"这种基础问题上,一查发现装了三个不同版本的Python,依赖全乱套。
说白了,环境搞不定,后面全是坑。所以这一章咱们老老实实把地基打牢。按我的经验,花半小时配好环境,能省下后面几十个小时的debug时间。
4.1 为什么选Anaconda
Python的发行版很多,但我个人强烈推荐Anaconda。原因有三:
- 自带科学计算全家桶——NumPy、pandas、scikit-learn这些都是预装的,省去一个个装的麻烦
- 虚拟环境管理一流——conda命令比pip+virtualenv顺手多了,环境隔离彻底
- 不碰系统Python——它装在用户目录下,不会搞乱系统自带的Python
我记得有个项目需要同时用RDKit和OpenBabel,这两个包对Python版本要求完全不同。要是没有虚拟环境隔离,光解决依赖冲突就能折腾一整天。用conda环境,三分钟搞定。
4.2 安装Anaconda
去官网下载对应操作系统的安装包。嗯,这里要注意版本——别装太新的,我建议用Python 3.9或3.10对应的版本。为什么呢?因为很多化学信息学包(比如RDKit)对新版Python的支持有滞后。
Linux用户我推荐用命令行安装:
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
bash Anaconda3-2024.10-1-Linux-x86_64.sh
安装过程中一路yes就行,最后会让你确认是否把conda加入PATH。我建议选yes,省得后面手动配环境变量。
装完记得验证一下:
conda --version
python --version
4.3 配置Jupyter Lab
Jupyter Notebook的升级版。界面更现代化,支持多标签页,文件浏览器,还能直接拖拽文件。我在做ADMET分析时,习惯一边写代码一边看结果,Jupyter Lab的分屏功能刚好满足需求。
安装很简单:
conda install jupyterlab -y
启动命令:
jupyter lab
启动后浏览器会自动打开,默认端口8888。如果你在远程服务器上跑,记得加个参数:
jupyter lab --no-browser --port=8888
4.4 虚拟环境:ADMET项目的命根子
为什么非要用虚拟环境?说白了就是隔离依赖。每个项目有自己的一套包,互不干扰。ADMET分析涉及的包特别多,RDKit、pandas、scikit-learn、matplotlib、mordred...版本一乱,代码就跑不起来。
我创建环境的习惯是这样的:
conda create -n admet_pca python=3.9 -y
conda activate admet_pca
-n 后面的名字可以自己定,我建议用项目名或者缩写。这样一目了然,切换环境时不会搞混。
查看已有环境:
conda env list
退出环境:
conda deactivate
删除环境(如果装坏了别怕,直接删了重建):
conda env remove -n admet_pca
4.5 依赖包安装与管理
ADMET分析的核心依赖包,我整理了一个清单:
| 分类 | 包名 | 用途 | 安装方式 |
|---|---|---|---|
| 化学信息学 | rdkit | 分子描述符计算 | conda install -c conda-forge rdkit |
| 化学信息学 | mordred | 1D/2D 描述符 | pip install mordred |
| 数据科学 | pandas, numpy | 数据处理 | conda install pandas numpy |
| 机器学习 | scikit-learn | PCA 降维与建模 | conda install scikit-learn |
| 可视化 | matplotlib, seaborn | 结果绘图 | conda install matplotlib seaborn |
| ADMET数据库 | pubchempy | 化合物检索 | pip install pubchempy |
| 深度学习 | pytorch | 可选,用于DL模型 | conda install pytorch -c pytorch |
安装命令可以合并执行,节省时间:
conda install -c conda-forge rdkit pandas numpy scikit-learn matplotlib seaborn -y
pip install mordred pubchempy
为什么要混用conda和pip?因为有些包(比如RDKit)在conda-forge上维护得更好,依赖处理得干净。而mordred这种小众包,PyPI上更新更快。我建议优先用conda,找不到再用pip。
4.6 把环境注册到Jupyter内核
这一步很多人忽略。创建了环境,也装了包,但打开Jupyter Lab发现内核列表里只有默认的Python。为什么?因为没有把新环境注册成Jupyter内核。
两步搞定:
conda activate admet_pca
pip install ipykernel
python -m ipykernel install --user --name admet_pca --display-name "Python (ADMET PCA)"
重启Jupyter Lab后,右上角就能选内核了。选对内核才能用对环境的包,否则import全失败,你说坑不坑?
4.7 环境迁移与复现
项目做完了,要把环境分享给同事,或者部署到服务器上。靠记忆手动重装?不现实。conda提供了export机制:
conda activate admet_pca
conda env export > environment.yml
这个yml文件记录了所有包的版本号和来源(conda-forge还是PyPI)。别人拿到后,一行命令重建一模一样的坏境:
conda env create -f environment.yml
4.8 本章核心配置速查
下面是我在实际项目中总结出的ADMET分析最小化环境配置脚本,直接复制运行即可:
# ===== 1. 创建并激活环境 =====
conda create -n admet_pca python=3.9 -y
conda activate admet_pca
# ===== 2. 安装核心依赖 =====
conda install -c conda-forge rdkit pandas numpy scikit-learn matplotlib seaborn jupyterlab -y
# ===== 3. 安装扩展工具 =====
pip install mordred pubchempy molvs
# ===== 4. 注册Jupyter内核 =====
pip install ipykernel
python -m ipykernel install --user --name admet_pca --display-name "Python (ADMET PCA)"
# ===== 5. 验证安装 =====
python -c "import rdkit; print(f'RDKit version: {rdkit.__version__}')"
python -c "import mordred; print('Mordred installed successfully')"
python -c "import sklearn; print(f'scikit-learn version: {sklearn.__version__}')"
echo "环境搭建完成!运行 jupyter lab 开始工作。"
source ~/.bashrc 重载配置,或者手动把 export PATH="/home/yourname/anaconda3/bin:$PATH" 加到 .bashrc 里。
环境搭好后,跑个简单的测试,确保一切正常。我习惯先导入RDKit算一个分子的LogP,验证描述符计算能不能跑通。代码很简单:
from rdkit import Chem
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles('CCCO')
logp = Descriptors.MolLogP(mol)
print(f'Propanol LogP: {logp:.2f}')
如果能在Jupyter Lab里顺利输出结果,恭喜你——ADMET分析的开发环境就绪了。后面所有PCA质控的代码,都将跑在这个干净、可控的环境里。
记住我一句话:环境整洁,代码才靠谱。别在这个基础步骤上偷懒,后面你会感谢现在认真的自己。