pixi 初探

本来在 B 站看了一个关于各种 conda 之间关系的视频,结果评论区好多人都提到了 pixi, 大家都说好。之前倒是没听说过,简单研究一下,记录一下相关用法。

pixi 是一个“现代化的包管理和项目管理工具”,在 Python 虚拟环境管理方面相比 conda 有很多显著优势。它基于 conda-forge 生态,使用 rust 编写,所以速度很快。看起来除了 Python 之外,pipx 还可以管理包含 rust、go 语言等其他语言的环境。

目前以我浅薄的了解,pixi 主要用在单个项目的环境管理,同时也能创建全局环境,在项目外也可使用。

安装

Linux 和 macOS 端比较简单,直接运行:

1
curl -fsSL https://pixi.sh/install.sh | sh

Windows 端可以使用:

1
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex"

同时支持 Homebrew、winget、scoop 等方式安装。我就直接使用 scoop 进行下载安装了。

在项目中使用

pixi 主要用在项目管理中,其一些主要的用法如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 创建新项目
pixi init my-project
cd my-project

# 添加依赖(自动安装和更新环境),默认从 conda-forge 安装
pixi add numpy pandas

# 指定安装渠道
pixi add pytorch --channel pytorch
pixi add --pypi requests

# 在当前环境执行命令
pixi run python script.py
pixi run pytest

# 在当前环境运行任务,任务需在 toml 文件 [tasks] 中定义
pixi run start
pixi run test

# 新建一个临时环境执行命令
pixi exec python -VV

# 进入环境
pixi shell

# 按配置文件安装依赖
pixi install

与 conda 的常用工作流进行对比:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 创建环境
conda create -n myenv python=3.9
conda activate myenv

# 安装包
conda install numpy pandas
pip install requests  # 混用 pip

# 导出环境
conda env export > environment.yml

# 在新机器上重建
conda env create -f environment.yml

相对地,pixi 的工作流:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 初始化项目
pixi init

# 添加依赖(自动创建和管理环境)
pixi add python=3.9 numpy pandas
pixi add --pypi requests

# 运行项目(自动激活环境)
pixi run python main.py

# 分享项目(包含锁定文件)
# 其他人只需:pixi install

项目配置文件

对于项目环境的配置,会写入项目目录下的 pixi.toml(pixi 默认使用)或 pyproject.toml ​文件。对于 Python 来说,pyproject.toml 文件是标准的项目配置文件,如果想生成一个通用的配置文件以供其他文件使用,可通过以下命令指定配置文件名称:

1
pixi init --format pyproject

而在 pixi 中使用 pypi 通道安装软件包,则会写入配置文件中的 [dependencies] 下,可供其他如 uv 等类似工具使用。

多环境管理

在一个项目中可能需要若干隔离的环境,下方命令可以指定某个环境进行操作:

1
2
3
4
5
6
7
8
# 在 test 环境下添加 pytest 依赖
pixi add --pypi --feature test pytest

# 安装 test 环境的依赖
pixi install --environment test

# 在 test 环境下运行
pixi run --environment test pytest

在全局环境使用

本来以为 pixi global 和 conda 的使用方法类似,但并不是。个人理解为可以在随处调用 pixi 某环境的一种快捷方式。例如我创建了一个名为 test 的全局环境,其中安装了 Python 3.11, 并将其暴露(expose)为 py311 。 那么我在终端中任意路径下键入 py311 ,都会直接进入该环境下的 Python,而不需要手动激活该环境,这也跳出了单个项目的独立环境。相关用法如下:

1
2
3
4
5
6
7
8
# 创建一个名为 test 的环境,安装 Python 3.11,设置 py311 别名
pixi global install python=3.11 --environment test --expose py311=python

# 在该环境中添加 numpy 依赖
pixi global add numpy --environment test

# 查看环境情况
pixi global list

结果如下:

1
2
3
└── test
    ├─ dependencies: python 3.11.13, numpy 2.3.2
    └─ exposes: py311 -> python

需要注意的是,pixi global 环境不能像项目环境一样进入 shell. Windows 下需要将 C:\Users\<username>\.pixi\bin 目录加入 PATH 环境变量才能生效 expose。

更换镜像源

与 conda 和 pypi 类似,使用 pixi 也可以换源,毕竟用的就是 conda 和 pypi 安装软件包。方法是在 pixi 的 config.toml 文件中写入相应的镜像信息。pixi 可以按优先级加载多个路径的 config.toml 文件,各系统下配置文件路径可点此查看。不同路径配置文件的生效范围不同,详细内容可见文档中的备注部分,可按需求进行分级配置。下面以清华源为例,在 config.toml 中写入以内内容即可:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# conda 镜像
[mirrors]
"https://conda.anaconda.org/conda-forge" = [
    "https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge",
]
"https://conda.anaconda.org/pytorch" = [
    "https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch",
]

# pypi 镜像
[pypi-config]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"

Licensed under CC BY-NC-SA 4.0
最后更新于 2025-08-15 11:25+08:00

使用 Hugo 构建
主题 StackJimmy 设计