4. Python及科学计算环境搭建:Anaconda安装、conda环境管理、安装PyTorch、Jupyter Notebook
很多人一上来就急着写代码,结果装个包装到心态崩溃。说实话,我在蛋白结构预测项目里踩过的坑,有一半都是环境问题。今天这一章,我们就踏踏实实把地基打牢。
环境搭建就像盖楼的地基。地基歪了,后面模型跑不动,你都不知道该从哪查起。我个人习惯是,每做一个新项目,都用独立的环境——这样互不干扰,出问题也方便重来。
4.1 为什么选择Anaconda
Python本身只是个解释器,真正干活靠的是各种科学计算库。你想想看,Numpy、Scipy、PyTorch、OpenMM这些,一个个手动装,版本冲突能把你逼疯。
Anaconda帮你做了三件事:
- 管理Python版本:随时切换3.8、3.9、3.10
- 管理软件包:一键安装、卸载、升级
- 隔离环境:项目A和项目B的依赖互不干扰
我在项目中遇到过好几个同事,直接在系统Python里装东西,最后整个环境乱成一锅粥。重新装系统?那代价太大了。
4.2 安装Anaconda
安装这事,听起来简单,但也有细节。我曾经在Linux服务器上装错过版本,结果CUDA死活认不到。
先根据你的操作系统选版本:
| 操作系统 | 推荐安装包 | 备注 |
|---|---|---|
| Windows | Anaconda3-2024.10-Windows-x86_64.exe | 勾选"Add to PATH"(但我不建议,后面讲原因) |
| macOS | Anaconda3-2024.10-MacOSX-arm64.pkg | M系列芯片选arm64,Intel芯片选x86_64 |
| Linux | Anaconda3-2024.10-Linux-x86_64.sh | 用bash命令安装 |
Linux下的安装命令:
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-Linux-x86_64.sh
bash Anaconda3-2024.10-Linux-x86_64.sh
# 一路按Enter,最后问你是否要 conda init,选 yes
conda --version 确认安装成功。如果提示命令找不到,可能是PATH没配置好。手动加一下:
export PATH=~/anaconda3/bin:$PATH
# 把这个加到 ~/.bashrc 或 ~/.zshrc 里
4.3 conda环境管理——核心技能
这才是本章的重头戏。环境管理说白了,就是给每个项目一个独立的Python小世界。我之前遇到一个同学,在base环境里装了一堆包,结果想复现别人的项目,版本对不上,只能重装——太痛苦了。
先看最常用的命令:
| 操作 | 命令 | 说明 |
|---|---|---|
| 创建环境 | conda create -n protein python=3.9 |
-n 后面是环境名,可以随意取 |
| 激活环境 | conda activate protein |
进入该环境,命令行前面会出现 (protein) |
| 退出环境 | conda deactivate |
回到base环境 |
| 列出所有环境 | conda env list |
看到所有环境名和路径 |
| 删除环境 | conda env remove -n protein |
环境不想要了,直接删 |
| 导出环境 | conda env export > environment.yml |
把当前环境的所有包版本记录下来 |
我们这次做蛋白结构预测,就用Python 3.9,兼容性最好:
conda create -n protein_env python=3.9
conda activate protein_env
看到命令行前面出现 (protein_env) 了吗?嗯,这就是你的"小世界"了。
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
4.4 安装PyTorch
说到PyTorch,我得吐个槽。当初我配第一台GPU服务器时,花了整整一下午才装对版本。
PyTorch的安装,核心就一句话:版本必须匹配CUDA。
先看看你的显卡支持哪个CUDA版本:
nvidia-smi
# 看右上角 "CUDA Version: 12.1"
然后去PyTorch官网(pytorch.org)找到对应的安装命令。我这里给你几个典型场景:
| 场景 | GPU型号 | 推荐安装命令 |
|---|---|---|
| 有NVIDIA显卡,CUDA 12.x | RTX 30/40系列 | conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia |
| 有NVIDIA显卡,CUDA 11.8 | RTX 20/30系列 | conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia |
| 没有NVIDIA显卡 | CPU或MAC | conda install pytorch torchvision torchaudio -c pytorch |
| M系列芯片Mac | M1/M2/M3 | conda install pytorch torchvision torchaudio -c pytorch |
python -c "import torch; print(torch.cuda.is_available())"
# 输出 True 才表示成功调用GPU
如果输出False,说明PyTorch和CUDA版本不匹配,或者驱动没装对。
安装完成后,再装几个蛋白结构预测常用的库:
# 科学计算基础
conda install numpy scipy pandas
# 生物信息学常用
conda install -c conda-forge biopython
# 可视化
conda install matplotlib seaborn
# Jupyter Notebook(后面讲)
conda install jupyter
4.5 Jupyter Notebook——交互式开发的利器
你写蛋白结构预测的代码,肯定要反复调参数、看结果。如果用普通的.py文件,改一行跑一次,效率太低了。
Jupyter Notebook就是解决这个问题的:一段代码一个格子,跑完马上看结果。我在做AlphaFold2的项目时,90%的探索性代码都是在Notebook里写的。
启动和基本使用:
# 激活你的环境
conda activate protein_env
# 启动 Jupyter
jupyter notebook
# 浏览器会自动打开 http://localhost:8888
# 点击右上角 "New" -> "Python 3" 创建新笔记本
一个典型的Notebook长这样:
# 第一个格子:导入库
import torch
import numpy as np
# 第二个格子:写个简单的张量操作
x = torch.tensor([1.0, 2.0, 3.0])
print(x)
# 按 Shift+Enter 运行当前格子,自动跳到下一个
# 第三个格子:直接看结果图
import matplotlib.pyplot as plt
plt.plot([1,2,3],[4,5,6])
plt.show()
几个我常用的快捷键:
| 快捷键 | 功能 |
|---|---|
| Shift + Enter | 运行当前格子并跳到下一个 |
| Ctrl + Enter | 运行当前格子但不跳转 |
| Alt + Enter | 运行当前格子并在下方新建一个格子 |
| D + D(连续按两次D) | 删除当前格子 |
| A / B | 在上方/下方插入新格子 |
import torch, sys, numpy as np
print(f"Python: {sys.version}")
print(f"PyTorch: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"GPU: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None'}")
print(f"Numpy: {np.__version__}")
还有一个特别实用的功能——在Jupyter里切换conda环境的内核。如果你发现Notebook用的是base环境的内核,可以这样加你的环境:
# 在你的 conda 环境里安装 ipykernel
conda activate protein_env
conda install ipykernel
# 把当前环境注册为 Jupyter 内核
python -m ipykernel install --user --name protein_env --display-name "Protein (Python 3.9)"
之后打开Jupyter,在"Kernel" -> "Change kernel"里就能选了。
最后说一句——环境搭好了就别乱动。我在项目做到一半时,手贱升级了某个库,结果整个环境崩了。从那以后,我学会了快速导出环境配置:
conda env export > environment.yml
# 万一崩了,一秒重建:
conda env create -f environment.yml