跳转至

pixi

Pixi 是一个基于 Conda 生态系统的包管理器,用 Rust 编写,旨在解决 Conda 的痛点。

  • 项目隔离:每个项目都是一个独立的单元,包含了环境和配置,非常清晰,便于分享和管理。不需要 base 基础环境,pixi 可以在每个项目中单独构建环境,将软件安装在项目目录内,类似于虚拟环境;

项目地址 https://github.com/prefix-dev/pixi

官网 https://prefix.dev/

中文文档 https://hellowac.github.io/pixi-zh-cn/

安装

# 默认安装路径为 ~/.pixi/bin
$ curl -fsSL https://pixi.sh/install.sh | bash

设置

设置频道

pixi 默认只使用 conda-forge 频道(channel),生信用户需要添加 bioconda 频道。

# 设置全局默认频道
$ pixi config append default-channels conda-forge --global
$ pixi config append default-channels bioconda --global
$ cat ~/.pixi/config.toml 
default-channels = [
    "bioconda",
    "conda-forge",
]

设置国内源

如果需要设置使用国内的 conda 源,在配置文件 ~/.pixi/config.toml 中写入以下内容。

pixi.toml
[mirrors]
"https://conda.anaconda.org/conda-forge" = [
    "https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge",
    "https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge",
]
"https://conda.anaconda.org/bioconda" = [
    "https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda",
    "https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda",
]

使用

基本使用

pixi 默认基于项目(目录),软件安装都在项目目录内。

# 新建项目,在当前目录下创建目录 myproject。
# 等同于 mkdir myproject; cd myproject; pixi init
$ pixi init myproject
$ cd myproject

# 安装软件,安装的软件在 myproject/.pixi/envs 下
# 注意这里使用 pixi add,而不是 pixi install
$ pixi add bwa samtools bcftools
 Added bwa >=0.7.19,<0.8
 Added samtools >=1.22.1,<2
 Added bcftools >=1.22,<2

# 查看安装的软件
$ pixi list

# 进入环境,与 conda activate 类似
$ pixi shell
(myproject) $ samtools 

Program: samtools (Tools for alignments in the SAM format)
Version: 1.22.1 (using htslib 1.22.1)

Usage:   samtools <command> [options]

# 退出环境
# 或 ctrl d
(myproject) $ exit

# 不进入环境,直接使用软件
$ pixi run samtools

Program: samtools (Tools for alignments in the SAM format)
Version: 1.22.1 (using htslib 1.22.1)

Usage:   samtools <command> [options]

# 卸载软件
$ pixi remove samtools

# 升级软件
$ pixi update samtools
上面的软件只是安装到了项目目录下,也可以安装到全局目录下
# 全局安装
$ pixi global install bwa samtools bcftools 
# 查看软件安装路径
$ which bwa
~/.pixi/bin/bwa

# 查看全局安装的软件
$ pixi global list

# 查看 pixi 项目信息
$ pixi info
  • pixi add:修改当前项目的 pixi.toml(把依赖写进去),同时更新 pixi.lock 并立即安装到项目的 .pixi 环境里

  • pixi install:不改动清单,仅根据现存的 pixi.lock 把依赖一次性装到项目的 .pixi 目录;如果锁文件缺失会先生成再安装

多环境

同一个项目内,可以安装配置多个环境,通过 pixi add --feature 实现,其可以给同一套源码定义多套可随意开关的依赖 / 任务组合,而彼此互不污染。

$ pixi init myproject
$ cd myproject
$ pixi add --feature py311 python=3.11 numpy
$ pixi add --feature py312 python=3.12 numpy
$ pixi project environment add py311 --feature py311
$ pixi project environment add py312 --feature py312

# 进入 py311 的环境
$ pixi shell -e py311
$ ./app.py
# 或
$ pixi run -e py311 ./app.y

# 进入 py312 的环境
$ pixi shel2 -e py312
$ ./app.py
# 或
$ pixi run -e py312 ./app.y

pypi

部分 python 包在 conda 中不存在,在 PyPI 中存在,可以通过 pixi add --pypi package 安装。

R 环境

Note

142 集群操作系统为CentOS7,使用 pixi 安装 R 时会有这个问题。

pixi 在安装 r-base 时遇到 glibc 相关问题,需要在 pixi.toml 中指定 glibc 版本。

pixi.toml
[system-requirements]
libc = "2.17"
然后再安装 pixi add r-base

测试

$ pixi run R --version
WARNING: ignoring environment value of R_HOME
R version 4.5.2 (2025-10-31) -- "[Not] Part in a Rumble"
Copyright (C) 2025 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.

作业脚本

以下为如何在作业脚本中使用 pixi 的软件环境,注意在脚本中不可使用 pixi shell

简单场景,使用 pixi run

#!/bin/bash
#BSUB -q normal
#BSUB -n 8
#BSUB -J bwa_samtools
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -R "span[hosts=1]"

PROJ=/your/project
cd $PROJ

# 在项目目录中执行
# 单行命令
pixi run  python app.py

# 在项目目录中执行
# 重定向
pixi run bwa mem -t 8 ref.fa reads_R1.fq.gz reads_R2.fq.gz > reads.sam

# 在项目目录中执行
# 管道,利用 pixi run 开启一个 bash,然后在 bash 中运行相关命令
pixi run  -- bash -c '\
  bwa mem -t 8 ref/genome.fa reads_R1.fq.gz reads_R2.fq.gz | \
 samtools sort -@8 -o  reads.srt.bam'
复杂场景,使用类似 conda activate 的方式设置环境,执行 eval "$(pixi shell-hook)" 会设置一系列与 pixi 软件环境相关的环境变量。
#!/bin/bash
#BSUB -q normal
#BSUB -n 8
#BSUB -J bwa_samtools
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -R "span[hosts=1]"

PROJ=/your/project
cd $PROJ

# 在项目目录中执行
eval "$(pixi shell-hook)"

bwa mem -t 8 ref/genome.fa reads_R1.fq.gz reads_R2.fq.gz | \
 samtools sort -@8 -o  reads.srt.bam'

其它工具

https://github.com/Quantco/pixi-pack

错误处理

glibc

pixi 从 0.25.0 开始,项目依赖的最低 glibc 版本从 2.17(centos7) 变更为 2.28(centos8/rocky8),因此部分软件安装时可能出现报错 Virtual package '__glibc >=2.28' does not match any of the available virtual packages on your machine,可以在 pixi.toml 中定义 glibc 版本。

pixi.toml
[system-requirements]
libc = "2.17"
本文阅读量  次
本站总访问量  次