跳转至

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
GitHubhttps://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 outdatedpixi.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            # 搜索包

同类工具对比

特性Pixicondamambauv
速度极快(Rust)极快(Rust)
跨语言✅ Python/R/C++❌ 仅 Python
Lock 文件✅ 自动
任务运行✅ 内置
项目级环境❌(全局)❌(全局)
系统库✅ CUDA/HDF5
适用场景生信/数据科学通用通用纯 Python

总结:如果你做生信或数据科学,需要同时管理 Python + R + 系统级库(CUDA、HDF5、samtools),Pixi 是最好的选择。它比 conda 快 10 倍,自带 lock 文件和任务运行器,是 conda 生态的现代化替代。