Pixi环境管理 — Pixi跨语言包管理
一句话概述:Pixi 是用 Rust 写的跨平台跨语言包管理器,基于 conda 生态但比 conda 快 10 倍,能同时管理 Python、R、C++ 的依赖,特别适合生信和数据科学项目。
核心知识点速查表
| 概念 | 白话解释 |
|---|
| Pixi | 基于 conda 生态的现代包管理器,用 Rust 写的 |
| conda-forge | 最大的 conda 包源,有 CUDA、HDF5 等底层库 |
| pixi.toml | 项目配置文件(类似 package.json) |
| pixi.lock | 锁定文件,保证每台机器装一模一样的环境 |
| Task | 内置任务运行器,像 Makefile 但跨平台 |
| 多环境 | 一个项目可以定义多个环境(dev、test、prod) |
当前版本信息(2026年)
| 信息 | 详情 |
|---|
| 开发语言 | Rust(基于 rattler 库) |
| 包源 | conda-forge + PyPI |
| 灵感来源 | Cargo(Rust)、PNPM(Node.js)、Poetry |
| 官网 | https://pixi.sh |
| GitHub | https://github.com/prefix-dev/pixi |
| 许可证 | BSD-3-Clause |
安装配置
# 方法1:官方安装脚本(推荐)
curl -fsSL https://pixi.sh/install.sh | bash
# 方法2:Homebrew(macOS/Linux)
brew install pixi
# 方法3:conda-forge
conda install -c conda-forge pixi
# 验证安装
pixi --version
# 自动补全(可选)
pixi completion --shell bash >> ~/.bashrc # Bash
pixi completion --shell zsh >> ~/.zshrc # Zsh
基本使用
创建项目
# 创建新项目
pixi init my-project # 生成 pixi.toml
cd my-project
# 在已有项目初始化
pixi init . # 在当前目录初始化
管理依赖
# 添加 conda 包(默认从 conda-forge)
pixi add python=3.12 # 指定 Python 版本
pixi add numpy pandas # 添加多个包
pixi add "scipy>=1.11" # 指定版本约束
# 添加 PyPI 包(conda 没有的包)
pixi add --pypi requests # 从 PyPI 安装
pixi add --pypi "flask>=3.0" # 指定版本
# 添加系统级依赖(conda 的强项)
pixi add cuda-toolkit=12.4 # CUDA 工具包
pixi add hdf5 # HDF5 库
pixi add samtools # 生信工具
pixi add r-base # R 语言
# 移除依赖
pixi remove numpy
# 安装所有依赖
pixi install # 根据 pixi.lock 安装
运行命令
# 在项目环境中运行命令
pixi run python main.py # 运行 Python 脚本
pixi run jupyter lab # 启动 Jupyter Lab
pixi run samtools view ... # 运行生信工具
# 进入项目 shell
pixi shell # 激活环境的 shell
pixi.toml 配置
[project]
name = "metagenomics-pipeline"
version = "0.1.0"
description = "宏基因组分析流程"
channels = ["conda-forge", "bioconda"] # 包源
platforms = ["linux-64", "osx-arm64"] # 目标平台
[dependencies]
python = "3.12.*" # Python 版本
numpy = ">=1.26" # 数值计算
pandas = ">=2.1" # 数据处理
samtools = ">=1.19" # SAM/BAM 处理
fastp = ">=0.23" # 质控工具
[pypi-dependencies]
biopython = ">=1.83" # BioPython(PyPI)
[feature.dev.dependencies]
pytest = ">=9.0" # 测试框架
ruff = ">=0.15" # 代码检查
[environments]
default = { solve-group = "default" }
dev = { features = ["dev"], solve-group = "default" }
[tasks]
qc = "fastp -i data/raw.fq -o data/clean.fq" # 质控任务
test = "pytest tests/" # 运行测试
lint = "ruff check src/" # 代码检查
任务管理
# 运行定义好的任务
pixi run qc # 运行质控
pixi run test # 运行测试
# 任务可以有依赖关系
# pixi.toml 中:
# [tasks]
# clean = "fastp -i raw.fq -o clean.fq"
# align = { cmd = "bwa mem ref.fa clean.fq > out.sam", depends-on = ["clean"] }
# sort = { cmd = "samtools sort out.sam -o out.bam", depends-on = ["align"] }
# pipeline = { depends-on = ["clean", "align", "sort"] }
高级用法
多环境管理
# pixi.toml
[feature.cuda.dependencies]
pytorch = ">=2.3"
cuda-toolkit = "12.4.*"
[feature.cpu.dependencies]
pytorch-cpu = ">=2.3"
[environments]
gpu = { features = ["cuda"] } # GPU 环境
cpu = { features = ["cpu"] } # CPU 环境
pixi run -e gpu python train.py # 在 GPU 环境运行
pixi run -e cpu python train.py # 在 CPU 环境运行
跨平台支持
# pixi.toml
platforms = ["linux-64", "osx-arm64", "win-64"]
# Pixi 会为所有平台解析依赖,生成统一的 pixi.lock
# 团队成员不管用什么系统,装的包版本一模一样
生信项目示例
[project]
name = "t2d-metagenome"
channels = ["conda-forge", "bioconda"]
platforms = ["linux-64"]
[dependencies]
python = "3.12.*"
# 质控
fastp = ">=0.23"
fastqc = ">=0.12"
# 组装
megahit = ">=1.2"
# 比对
bowtie2 = ">=2.5"
samtools = ">=1.19"
# 物种注释
kraken2 = ">=2.1"
bracken = ">=2.9"
# 功能注释
humann = ">=3.8"
metaphlan = ">=4.0"
# 数据分析
r-base = ">=4.3"
r-vegan = ">=2.6"
[tasks]
qc = "bash scripts/01_qc.sh"
assemble = { cmd = "bash scripts/02_assemble.sh", depends-on = ["qc"] }
annotate = { cmd = "bash scripts/03_annotate.sh", depends-on = ["assemble"] }
analyze = { cmd = "Rscript scripts/04_analyze.R", depends-on = ["annotate"] }
all = { depends-on = ["qc", "assemble", "annotate", "analyze"] }
常见报错与解决
| 报错信息 | 原因 | 解决方案 |
|---|
No solution found | 依赖冲突 | 放宽版本约束,或添加正确的 channel |
Package not found | 包不在指定 channel | 添加 bioconda channel 或用 --pypi |
Platform not supported | 包不支持当前平台 | 检查 platforms 设置 |
Lock file outdated | pixi.lock 过期 | pixi install 会自动更新 |
| 下载慢 | 国外源速度慢 | 使用清华或中科大 conda 镜像 |
速查表
# ===== 项目管理 =====
pixi init # 初始化项目
pixi install # 安装依赖
pixi update # 更新依赖
# ===== 依赖管理 =====
pixi add package # 添加 conda 包
pixi add --pypi package # 添加 PyPI 包
pixi remove package # 移除包
pixi list # 列出已安装包
# ===== 运行 =====
pixi run command # 在环境中运行命令
pixi run -e env command # 在指定环境运行
pixi shell # 进入环境 shell
pixi run task-name # 运行任务
# ===== 信息 =====
pixi info # 项目信息
pixi search package # 搜索包
同类工具对比
| 特性 | Pixi | conda | mamba | uv |
|---|
| 速度 | 极快(Rust) | 慢 | 快 | 极快(Rust) |
| 跨语言 | ✅ Python/R/C++ | ✅ | ✅ | ❌ 仅 Python |
| Lock 文件 | ✅ 自动 | ❌ | ❌ | ✅ |
| 任务运行 | ✅ 内置 | ❌ | ❌ | ❌ |
| 项目级环境 | ✅ | ❌(全局) | ❌(全局) | ✅ |
| 系统库 | ✅ CUDA/HDF5 | ✅ | ✅ | ❌ |
| 适用场景 | 生信/数据科学 | 通用 | 通用 | 纯 Python |
总结:如果你做生信或数据科学,需要同时管理 Python + R + 系统级库(CUDA、HDF5、samtools),Pixi 是最好的选择。它比 conda 快 10 倍,自带 lock 文件和任务运行器,是 conda 生态的现代化替代。