第2章 环境搭建:Python、Anaconda、Scanpy 安装

2.1 工欲善其事,必先利其器

环境搭建这事儿,说难不难,说简单也真容易翻车。我刚开始做单细胞分析时,花了一整天折腾 Python 版本冲突,后来才发现,根子就在环境管理没做好。

你要跑 Scanpy 做空间转录组,说白了就是把几层软件叠起来:操作系统 → Python 解释器 → 科学计算库 → 分析框架。哪一层没对齐,都可能跑不起来。

下面这张图是本章的路线图,你看一眼就知道整个安装流程长什么样。

Scanpy 空间转录组环境搭建全景 软件栈层级 操作系统 Linux / Windows / macOS 环境管理 Anaconda / Miniconda + Python 3.10 科学计算栈 NumPy · SciPy · pandas · matplotlib 分析框架 Scanpy + Squidpy / SpaGCN 安装流程 Step 1 下载并安装 Anaconda Step 2 创建独立环境 (conda create) Step 3 安装科学计算核心库 (pip install) Step 4 安装 Scanpy + 空间组学工具 Step 5 验证安装 (import scanpy) 💡 建议全程使用 conda 虚拟环境,避免与系统 Python 冲突 每个项目独立环境,是我个人保持多年的习惯

2.2 Python 版本怎么选

Python 3.8 到 3.11 都能跑 Scanpy,但我建议你选 Python 3.10。

为什么?我在项目中试过好几次,3.10 对主流科学计算库的兼容性最好,既不会像 3.8 那样有些新包不支持,也不会像 3.11 刚出时某些底层库还没跟上。你想想看,省心才是第一位的。

Python 版本 Scanpy 兼容性 推荐指数 备注
3.8 ✅ 兼容 ★★★ 部分新包已停止支持
3.9 ✅ 兼容 ★★★★ 可用,但非最优
3.10 ✅ 最佳 ★★★★★ 我首推这个版本
3.11 ✅ 兼容 ★★★★ 部分底层库需等待更新

2.3 Anaconda 还是 Miniconda

这两个其实是一家子,核心都是 conda 这个包管理器。区别在于:Anaconda 装完自带 150+ 科学计算包,而 Miniconda 只有 conda 和 Python,其他包你需要什么装什么。

我个人习惯用 Miniconda,轻量、干净,不容易出现包冲突。但如果你不想一个个装基础库,Anaconda 开箱即用也挺好。

对比项 Anaconda Miniconda
安装包体积 ~3 GB ~400 MB
预装包数量 150+ 仅 conda + Python
适合人群 新手、图省事 有经验、要可控
我的推荐 入门可选 ⭐ 强烈推荐

下载地址小贴士

官网下载慢的话,可以用清华镜像站:

# Miniconda (Linux, Python 3.10)
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_24.11.1-0-Linux-x86_64.sh
bash Miniconda3-py310_24.11.1-0-Linux-x86_64.sh

2.4 创建独立分析环境

为什么要单独建环境?我遇到过不止一次,因为不同项目依赖的包版本打架,搞得整个 Python 都崩了。环境隔离,说白了就是给每个项目一个"干净的房间"。

# 创建一个名为 scanpy_spatial 的环境,指定 Python 3.10
conda create -n scanpy_spatial python=3.10 -y

# 激活环境
conda activate scanpy_spatial

激活成功后,终端前面会出现 (scanpy_spatial) 这个前缀,代表你已经进入独立环境了。嗯,这里要注意:以后每次跑分析,都得先激活这个环境。

我曾经踩过的坑

有一次我忘了激活环境,直接在 base 里装了 Scanpy,结果跟系统自带的 Python 包冲突,连 pip 都报错。花了两个小时才清理干净。所以每次打开终端,第一件事就是 conda activate scanpy_spatial,养成习惯。

2.5 安装 Scanpy 及空间转录组工具包

环境激活后,就可以安装核心工具了。我习惯用 pip 安装 Scanpy 系列包,因为 conda 渠道有时候版本更新慢一拍。

# 升级 pip 到最新(可选,但建议做)
pip install --upgrade pip

# 安装核心科学计算库
pip install numpy scipy pandas matplotlib

# 安装 Scanpy 核心框架
pip install scanpy

# 安装空间转录组专属工具
pip install squidpy          # 空间组学分析全家桶
pip install anndata           # 数据容器(通常随 Scanpy 自动安装)

如果你需要跑 SpaGCN 或 STUtility,也可以一并装上:

pip install SpaGCN STUtility

📦 包版本锁定的好习惯

安装完成后,建议把当前环境的包版本导出一份,方便以后复现:

pip freeze > requirements.txt

# 或者用 conda 导出更完整的环境信息
conda env export > environment.yml

以后换机器或者重新搭建,直接 pip install -r requirements.txt 或 conda env create -f environment.yml 就搞定了。

2.6 验证安装是否成功

装完了别急着关终端,先跑几个命令验证一下。我每次装完都会做这一步,确保所有组件都能正常加载。

# 验证 Python 版本
python --version

# 验证 Scanpy 能否导入并查看版本
python -c "import scanpy as sc; print('Scanpy 版本:', sc.__version__)"

# 验证 Squidpy
python -c "import squidpy as sq; print('Squidpy 版本:', sq.__version__)"

# 验证核心依赖
python -c "
import numpy as np
import pandas as pd
import scipy
print('NumPy:', np.__version__)
print('pandas:', pd.__version__)
print('SciPy:', scipy.__version__)
print('✅ 所有核心库加载正常!')
"

正常情况下,你会看到类似这样的输出(版本号可能略有不同):

Python 3.10.16
Scanpy 版本: 1.10.4
Squidpy 版本: 1.5.0
NumPy: 1.26.4
pandas: 2.2.3
SciPy: 1.14.1
✅ 所有核心库加载正常!

2.7 避坑指南与实用命令速查

下面这几个坑,我几乎看到每个初学者都踩过。你心里有数,就能绕开。

  • 装了包但 import 报错——八成是没激活环境,或者激活了但装在了 base 里。用 conda info --envs 检查当前环境。
  • Scanpy 版本太旧——空间转录组分析需要较新版本(≥1.9),装完后用 sc.__version__ 确认。
  • Windows 用户注意——部分底层库(如 leidenalg)在 Windows 上需要预装 VC++ 编译工具。如果安装失败,去微软官网下载 "Visual C++ Build Tools" 就行。
  • 镜像源超时——国内用户建议配置清华或阿里云的 pip 镜像,速度能快 10 倍。
# 配置清华 pip 镜像(全局生效)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

最后,给你一张常用 conda 命令速查表,平时随时翻看。

操作 命令
创建环境 conda create -n 环境名 python=3.10 -y
激活环境 conda activate 环境名
退出环境 conda deactivate
列出所有环境 conda info --envs
删除环境 conda env remove -n 环境名
导出环境 conda env export > environment.yml
从文件创建环境 conda env create -f environment.yml

环境搭好了,接下来就可以正式进入空间转录组的数据分析了。记住:环境干净、版本对齐,后面所有的分析才能顺利跑通。