第2章 Python环境搭建:Anaconda安装、创建虚拟环境、安装核心库

做空间转录组分析,第一步就是搭环境。说实话,我见过太多人在这一步翻车了——不是库冲突就是版本对不上,折腾半天还没开始写代码。我记得刚开始做空间转录组项目时,光配环境就花了两天,后来学乖了,用Anaconda+虚拟环境,一次性搞定。

这一章,咱们把环境搭结实。后面30章的所有分析代码,都跑在这个环境上。

2.1 为什么需要统一的环境管理

你想想看,空间转录组分析涉及多少库?Scanpy做核心分析,Squidpy处理空间信息,matplotlib绘图,pandas处理数据……每个库又有自己的依赖版本要求。直接往系统Python里装,早晚出乱子。

Anaconda解决了这个问题。它自带Python、包管理器和虚拟环境功能。说白了,就是给你的每个项目建一个独立的小房间,互不干扰。

我个人习惯,每个项目都用独立的conda环境。这样换项目时不用重新装系统,切个环境就行。

环境管理核心原则:

  • 每个项目一个独立虚拟环境
  • 记录环境配置,方便复现
  • 定期更新核心库,但不要追最新版

2.2 Anaconda的安装与配置

Anaconda的安装不复杂,各平台都有对应的安装包。这里我列一下关键步骤。

下载安装

去Anaconda官网下载对应系统的安装包。Windows选exe,macOS选pkg,Linux选sh脚本。

安装完成后,验证一下:

conda --version

# 正常输出类似:
# conda 24.1.2

如果提示找不到命令,通常是环境变量没配好。Windows用户在安装时勾选"Add Anaconda to my PATH",Linux/macOS用户检查~/.bashrc或~/.zshrc里是否添加了Anaconda的路径。

小技巧: 我在Windows上遇到过路径含中文导致conda无法正常激活的问题。解决方案很简单——安装路径全英文,别用中文用户名。

2.3 创建独立的虚拟环境

为什么要创建虚拟环境?说白了就是为了隔离。你跑项目A时用Scanpy 1.9,项目B用Scanpy 1.10,两个环境互不打架。

我建议给环境起名时带上项目标识,方便以后识别。

# 创建环境,指定Python版本
conda create -n sap_transcriptomics python=3.9

# 激活环境
conda activate sap_transcriptomics

# 确认Python版本
python --version

环境激活后,命令行前面会出现环境名,像这样:

(sap_transcriptomics) $

看到这个提示,说明你已经在虚拟环境里了。后面安装的所有库都只在这个环境里生效。

注意: 每次新开终端,都要先激活环境。我曾经因为忘了激活,把库装到了base环境里,结果项目跑起来各种报错。养成习惯——开终端先conda activate。

空间转录组环境搭建流程 ① 安装 Anaconda ② 创建虚拟环境 conda create ③ 安装 Scanpy ④ 安装 Squidpy ⑤ 安装 matplotlib等依赖库 ⑥ 验证环境 import 测试 核心原则:每次项目开始前,先建环境、装库、验证,一气呵成

2.4 安装核心分析库

环境建好了,开始装库。空间转录组分析的核心库就这么几个,我按安装顺序列出来。

库名 建议版本 用途 安装命令
Scanpy ≥1.9 单细胞/空间转录组核心分析 pip install scanpy
Squidpy ≥1.2 空间转录组专用分析 pip install squidpy
matplotlib ≥3.6 可视化基础库 pip install matplotlib
pandas ≥1.5 数据处理与表格操作 pip install pandas
numpy ≥1.24 数值计算与矩阵运算 pip install numpy
leidenalg 最新 聚类算法(Leiden) pip install leidenalg
python-igraph 最新 图数据结构与分析 pip install python-igraph

实际安装时,一条命令装完所有库:

pip install scanpy squidpy matplotlib pandas numpy leidenalg python-igraph

这里要注意顺序。我个人习惯先装numpy和pandas,再装Scanpy和Squidpy。虽然pip会自动处理依赖,但分批装更容易定位问题。

踩坑提醒: 我在项目中遇到过Scanpy和Squidpy版本不匹配的问题。当时装了Scanpy 1.8和Squidpy 1.1,跑空间可变基因分析时直接报错。后来统一升级到最新版才解决。建议装之前看一眼两个库的兼容性说明。

2.5 验证环境是否成功

库装完了,别急着开干。先验证一下所有库能不能正常导入。我通常用一个小脚本做全量检查:

# 验证脚本:check_env.py
import sys
print(f"Python 版本: {sys.version}")

import numpy as np
print(f"numpy 版本: {np.__version__}")

import pandas as pd
print(f"pandas 版本: {pd.__version__}")

import matplotlib
print(f"matplotlib 版本: {matplotlib.__version__}")

import scanpy as sc
print(f"Scanpy 版本: {sc.__version__}")

import squidpy as sq
print(f"Squidpy 版本: {sq.__version__}")

import igraph
print(f"igraph 版本: {igraph.__version__}")

import leidenalg
print(f"leidenalg 版本: {leidenalg.__version__}")

print("\n✅ 所有库导入成功,环境配置完成!")

运行这个脚本:

python check_env.py

如果所有库都能正常导入并打印版本号,说明环境搭建成功了。

我的一点经验: 验证环境这一步别跳过。我曾经自认为装好了,结果一跑分析代码,发现少了python-igraph,Leiden聚类直接报错。浪费了半小时排查。5分钟的验证,能省下后面大量的调试时间。

2.6 避坑指南与小结

环境搭建看起来简单,但坑不少。我把自己踩过的坑列出来,你遇到了可以直接翻到这里看。

常见问题与解决方法:

  • pip安装慢: 用国内镜像源,比如清华或阿里云的镜像。
  • 库版本冲突: 优先用conda装,conda的依赖解析比pip更严格。实在不行再混用pip。
  • 导入时提示找不到库: 看看是不是忘了激活虚拟环境。
  • Windows上igraph报错: 先装python-igraph,再装leidenalg,顺序别反。
  • macOS M1/M2芯片: 部分库需要ARM64版本,用conda装一般会自动处理。

环境导出与复现:

环境配好后,我建议你导出一份配置文件。以后换电脑或者分享给同事,一条命令就能完全复现。

# 导出环境配置
conda env export -n sap_transcriptomics -f environment.yml

# 别人拿到后,用这个文件重建环境
conda env create -f environment.yml

本章要点回顾:

  • Anaconda是环境管理的基础,安装时注意路径不要含中文
  • 每个项目建一个独立虚拟环境,用conda create创建
  • 核心库包括Scanpy、Squidpy、matplotlib、pandas、numpy、leidenalg、python-igraph
  • 安装后用验证脚本检查所有库能否正常导入
  • 导出environment.yml方便环境复现

环境搭好了,后面就可以安心做分析了。说实话,环境配置这一步虽然枯燥,但它是整个工具链的基石。你在这里花半小时,后面能省下数倍的时间。