pixi
Pixi 是一个基于 Conda 生态系统的包管理器,用 Rust 编写,旨在解决 Conda 的痛点。
- 项目隔离:每个项目都是一个独立的单元,包含了环境和配置,非常清晰,便于分享和管理。不需要 base 基础环境,pixi 可以在每个项目中单独构建环境,将软件安装在项目目录内,类似于虚拟环境;
项目地址 https://github.com/prefix-dev/pixi
中文文档 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 中写入以下内容。
[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 版本。
[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 版本。
[system-requirements]
libc = "2.17"
本站总访问量 次