Pixi
Pixi 是一个快速、现代且可复现的包管理和环境管理工具。
Pixi 基于 Conda 生态,同时也兼容 PyPI 生态。
由于 pixi 功能非常丰富,因此有很多工具与其功能存在重叠
conda/mamba 是重叠程度最大的,pixi 对前者进行了很多改进
- 实现上,pixi 使用 Rust;而 conda/mamba 分别使用 Python 和 C++
- 功能上,pixi 添加了很多特性,比如锁文件、项目级管理、任务运行、用链接节省磁盘空间、安装全局工具等
更详细的区别可阅读 官方对比
可以说 pixi 就是 conda 的现代版本。
uv 和 pixi 都可以管理 Python 项目。详细差别可阅读 官方对比
个人认为,二者最大的区别就是 pixi 适合跨语言的依赖管理,而这些主要涉及和科学计算相关的库。对于没有跨语言依赖的 Python 项目,uv 也许更合适。
mise 和 pixi 都可以管理全局工具的安装
- pixi 目前只支持 Conda 生态,还未兼容 PyPI 包
- mise 则同时兼任了 Conda 和 PyPI 以及 一众后端
# Windowsscoop install pixiScoop 这一安装方式没有把全局工具所在的目录加到 PATH 中,其位置默认为 ~/.pixi/bin,可以手动修改,或者使用我的 bucket
环境变量 PIXI_HOME 决定了 pixi 会把数据保存在哪里
pixi 的功能相当多,Basic Usage 上列举了 pixi 的所有功能
相比 conda/mamba,pixi 最大的改进就在项目管理上
# 新建项目pixi init examplecd example# 添加 conda 依赖pixi add numpy matplotlib# 添加 pypi 依赖pixi add --pypi httpx# 移除依赖pixi remove numpy# 更新依赖pixi update numpy# 列出依赖pixi list# 查看依赖树pixi tree# 更新锁文件pixi lock# 展示项目信息pixi info此外还可以直接修改项目根目录的 pixi.toml 文件,比如
[pypi-dependencies]torch = { version = ">=2.12.0", index = "https://download.pytorch.org/whl/cu132" }torchvision = { version = "*", index = "https://download.pytorch.org/whl/cu132" }
[dependencies]python = "=3.13"numpy = ">=2.4.6"matplotlib = ">=3.10.9"然后安装或者重新安装依赖
# 安装环境pixi install# 重装环境pixi reinstallpixi 从 Conda 中继承了环境的概念,不过做了些改进让其更好用
pixi 的环境分为项目环境和全局环境。对于项目环境,可以直接用其改变 shell 环境
# 启动一个注入了项目环境的 shell 实例pixi shell# 在当前 pwsh 中激活环境pixi shell-hook | Out-String | Invoke-Expression# 在当前 bash/zsh 中激活环境eval "$(pixi shell-hook)"# 在当前 fish 中激活环境pixi shell-hook | source或者直接在项目环境中运行命令
# 在项目环境中运行命令pixi run python main.py# 或者先添加任务pixi task add hello "python main.py"# 然后在项目环境中运行任务pixi run hello以及删除环境
# 删除当前项目中的环境pixi cleanpixi 还可以在一个项目中存在多个环境,参考 官方文档 - 多重环境
对于全局环境,阅读下面的 全局工具 这节
全局环境可以创建、修改和删除,但无法激活。因此其并不完全等同于 Conda 的环境
# 创建 jupyter 环境并安装 nbconvertpixi global install --environment jupyter --expose jupyter nbconvert# 暴露 jupyter 环境中的 jupyter 二进制文件到路径中pixi global expose add --environment jupyter jupyter# 在 jupyter 环境里继续添加 numpy 和 matplotlib 依赖pixi global add --environment jupyter numpy matplotlib# 删除 jupyter 环境pixi global uninstall jupyterpixi 有一个全局环境的清单文件,也可以直接修改这个文件并自动进行同步
# 修改全局环境清单文件pixi global edit# 同步全局环境清单文件pixi global sync除此之外全局环境还有别的功能
# 列出所有全局环境pixi global list# 列出 jupyter 环境中的所有依赖pixi global list --environment jupyter# 查看 jupyter 环境中的依赖树pixi global tree --environment jupyter