第4章 Python环境搭建:Anaconda、Jupyter Lab、虚拟环境创建与依赖包管理

做ADMET分析,环境搭建是第一道坎。很多人急着跑代码,结果装包装到崩溃,版本冲突搞到心态炸裂。我见过太多同学卡在"import pandas失败"这种基础问题上,一查发现装了三个不同版本的Python,依赖全乱套。

说白了,环境搞不定,后面全是坑。所以这一章咱们老老实实把地基打牢。按我的经验,花半小时配好环境,能省下后面几十个小时的debug时间。

本章核心目标:搭建一套完整、干净、可复用的ADMET分析环境,为后续PCA质控打好基础。
Python 环境搭建完整流程 1. 安装 Anaconda 2. 创建虚拟环境(conda create) 3. 激活环境(conda activate) 4. 安装 Jupyter Lab 与内核 5. 安装 ADMET 依赖包(pip/conda) 关键命令速查 conda create -n admet conda activate admet pip install rdkit pip install jupyterlab jupyter lab

4.1 为什么选Anaconda

Python的发行版很多,但我个人强烈推荐Anaconda。原因有三:

  • 自带科学计算全家桶——NumPy、pandas、scikit-learn这些都是预装的,省去一个个装的麻烦
  • 虚拟环境管理一流——conda命令比pip+virtualenv顺手多了,环境隔离彻底
  • 不碰系统Python——它装在用户目录下,不会搞乱系统自带的Python

我记得有个项目需要同时用RDKit和OpenBabel,这两个包对Python版本要求完全不同。要是没有虚拟环境隔离,光解决依赖冲突就能折腾一整天。用conda环境,三分钟搞定。

小提示:Anaconda的安装包比较大(500MB+),如果网速慢,可以用Miniconda——只有conda+Python,其他包按需装,轻量很多。

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
注意:Jupyter Lab默认只监听localhost,远程访问需要配置SSL和密码。生产环境千万别裸奔在公网上,我在早期项目中被坑过一次,服务器被人挖矿了...

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
我的最佳实践:每个ADMET分析项目独立一个环境,环境名用"项目名_python版本"的格式,比如"admet_pca_py39"。这样即使半年后回来,也知道这个环境是干嘛的。

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。

避坑指南:千万别在conda环境里用sudo pip install。我曾经手贱在服务器上sudo装了新版numpy,结果conda环境被污染,花了半天重建。切记——激活环境后直接pip,不加sudo。

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
经验之谈:我每次提交ADMET分析的论文或报告时,都会把environment.yml一并附上。审稿人要是想复现结果,直接conda env create就能跑。这才是真正的可复现研究。

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 开始工作。"
重要提醒:如果在macOS或Linux上遇到"command not found: conda",说明conda没加到PATH里。运行 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质控的代码,都将跑在这个干净、可控的环境里。

记住我一句话:环境整洁,代码才靠谱。别在这个基础步骤上偷懒,后面你会感谢现在认真的自己。