4. Python环境搭建
说实话,做空间转录组分析,最让人头疼的不是算法,而是环境。我见过太多同学在跑Scanpy之前先跟包冲突打了一架。别急,这一节咱们就把地基打牢。
我的个人习惯是:每做一个项目就开一个全新的虚拟环境,绝不跟其他项目混着用。为什么?因为numpy、pandas甚至Python版本都可能打架,你想想看,一个项目要scanpy 1.9,另一个要1.7,混在一起就崩了。我在项目中遇到过好几次这种“昨天还能跑今天报错”的灵异事件,最后发现就是一个库悄悄升级了。
4.1 安装Python
Visium空间聚类全流程我们基于Python 3.9~3.11。我个人推荐3.10,因为scanpy和squidpy在这个版本上兼容性最好。
Windows、macOS、Linux通用方式:
- 去 python.org 下载对应操作系统的安装包。
- 安装时记得勾选“Add Python to PATH”。
- Linux用户直接用系统包管理器就好:
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-dev
验证安装:
python3 --version
Python 3.10.12
4.2 创建虚拟环境
虚拟环境就像一间干净的实验室,不会污染全局的Python。我个人习惯用venv,轻量又自带。conda当然也行,但这里我们只做纯Python项目,venv足够。
创建环境:
# 创建一个名为 visium_spatial 的虚拟环境
python3 -m venv visium_spatial
激活环境:
- Windows(CMD/PowerShell):
visium_spatial\Scripts\activate
- macOS / Linux:
source visium_spatial/bin/activate
激活后你会看到命令行前面多了个 (visium_spatial),表示你已经进入环境了。
/home/user/visium_project/venv。这样删项目时一起删掉,干净利落。
4.3 安装必要库
我们先装核心计算库,再装生物信息学库,最后装可视化库。顺序很讲究——先装numpy和pandas,再装scanpy,否则依赖可能出问题。我早年犯过先装scanpy再装numpy,结果numpy版本被scanpy降级了,其他项目直接崩掉。
下面是完整安装命令(请逐条执行,别一口气全粘):
# 升 pip 到最新
pip install --upgrade pip
# 核心计算
pip install numpy pandas
# 空间转录组分析主力
pip install scanpy squidpy
# 可视化
pip install matplotlib seaborn
# 可选:Jupyter Notebook(强烈建议)
pip install jupyter
注意:squidpy 依赖于 scanpy,但官方建议一起装。我遇到过 squidpy 安装时自动拉了一个老版 scanpy,然后部分API对不上。所以稳妥做法:先装 scanpy 再装 squidpy。
| 库 | 推荐版本 | 说明 |
|---|---|---|
| Python | 3.10.12 | 长期支持,兼容性好 |
| numpy | 1.24.3 | 不要用2.x,scanpy不兼容 |
| pandas | 2.0.3 | 稳定版 |
| scanpy | 1.9.8 | 核心单细胞分析库 |
| squidpy | 1.2.3 | 空间分析扩展 |
| matplotlib | 3.7.2 | 标准绘图 |
| seaborn | 0.12.2 | 统计可视化辅助 |
4.4 验证安装
装完后,记得检查一下。别不信,我见过有人pip install后以为装好了,结果import时报“ModuleNotFoundError”。
python -c "import numpy; import pandas; import scanpy as sc; import squidpy as sq; import matplotlib; print('All good!')"
如果输出 All good! 说明环境没毛病。如果报错,回去看看是不是版本冲突或者漏装了。
还有一个我常用的验证方式:跑一下scanpy的经典测试数据集。它能帮我快速确认所有底层依赖(比如anndata、h5py、umap-learn)都正常工作。
import scanpy as sc
adata = sc.datasets.pbmc3k() # 下载一个小数据集
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
print(adata)
能看到 AnnData object 的概要信息,说明环境OK,可以开始分析啦。
4.5 环境搭建整体流程(一张图说清楚)
以上就是Python环境搭建的全部内容。你按这个顺序走,一般不会出问题。如果遇到奇怪的报错,多半是版本冲突,回到上一步重建环境就好了——别在一个坏环境里死磕,我当年debug过两天最后发现就是numpy版本不对,白白浪费时间。记住:干净的环境是高效分析的第一步。