第2章 环境搭建:Python、Anaconda、Scanpy 安装
2.1 工欲善其事,必先利其器
环境搭建这事儿,说难不难,说简单也真容易翻车。我刚开始做单细胞分析时,花了一整天折腾 Python 版本冲突,后来才发现,根子就在环境管理没做好。
你要跑 Scanpy 做空间转录组,说白了就是把几层软件叠起来:操作系统 → 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 |
环境搭好了,接下来就可以正式进入空间转录组的数据分析了。记住:环境干净、版本对齐,后面所有的分析才能顺利跑通。