文章目录
Pixi:用 Rust 重写 Conda 体验的包管理工具
Conda 生态里有个新工具 Pixi 热度在涨,GitHub Star 到了 7,200 多。它是 prefix.dev 团队用 Rust 开发的包管理器和 workflow 工具,操作感受很像 cargo 或 npm。
用过 conda 的人能理解这个项目解决了什么问题。传统 conda 的工作流涉及几个环节:环境激活、依赖求解、环境变量管理。项目多了以后还要记住每个项目用的环境。Pixi 改成声明式配置,项目根目录里跑几条命令就能配好环境。

声明式配置的好处是环境定义跟项目代码放在一起。pixi.toml 里写明需要哪些依赖,其他人 clone 以后跑一遍 pixi install 就能复现一致的环境。靠的是 lock 文件,锁定每个包的版本和依赖链,避免出现环境不一致的问题。
Pixi 还提供了 pixi exec 命令,可以在临时环境里跑工具,用完自动清理。适合偶尔用一下、不想装到项目里的场景。
日常用法
初始化项目的命令很简洁:
pixi init myworkspace
cd myworkspace
pixi add cowpy
pixi run cowpy "Hello"
环境建好就能直接用,不需要手动激活。pixi shell 可以进入交互环境,exit 退出。每次跑命令时 Pixi 自动识别当前项目目录,找到对应的环境。
Pixi 有两种安装模式。项目模式把依赖装在项目目录里,每个项目独立。全局模式用 pixi global install 把工具装到统一的隔离环境,类似 pipx。命令行工具用全局模式装,项目本身不依赖这些工具,两者互不干扰。
任务系统跟 npm scripts 很像。在 pixi.toml 里用 tasks 定义命令,pixi run test 就能执行。项目构建、测试相关的命令可以集中管理,团队协作时不用在文档里翻找。
语言和平台
Pixi 底层用 conda 生态的包做源,语言覆盖广。Python、C++、R 都能加,也兼容 PyPI。同一个项目里可以混用不同语言的库,不需要切换工具链。
跨平台方面,Linux、Windows、macOS 包括 Apple Silicon 都支持。lock 文件在各平台上都能用,平台差异由工具自动处理。
安装方式有几种:
curl -fsSL https://pixi.sh/install.sh | sh
Windows 用户用 PowerShell。也能通过 brew、winget 安装。自动补全覆盖 bash、zsh、powershell、fish、nushell、elvish,配好以后按 tab 就有提示。
conda 用户迁移过来也不麻烦。pixi 可以直接导入已有的 environment.yml 文件,把现有 conda 环境转成 pixi 格式。
性能和 CI
项目用 Rust 实现,底层用 rattler 库做 conda 包解析。依赖求解速度比 Python 版 conda 快,包越多差距越明显。
GitHub Actions 有官方配置 prefix-dev/setup-pixi,支持自动缓存。配好以后每次 CI 跑的时候,之前下载过的包不用重新下载。
当前状态
Pixi 已经可用于生产环境。团队承诺保持向后兼容,配置文件和 lock 格式不会突然变更。版本迭代比较快,社区在 Discord 上活跃。
后续规划包括把项目构建发布为 conda 包、支持从源码依赖、全局安装的确定性管理等。项目在 GitHub 上开源,用 Rust 贡献的门槛虽然高一些,但 issues 区有 good first issue 标签可以入手。
如果是日常使用,安装后跑 pixi --help 可以看到完整的命令列表。文档站 pixi.sh 写得比较清楚,从入门到高级配置都有。

如果你的项目依赖管理变得复杂,conda 求解速度跟不上节奏,或者想要文件级的依赖锁定,可以看看 Pixi。熟悉 cargo 或 npm 的人,上手成本几乎为零。
a 求解速度跟不上节奏,或者想要文件级的依赖锁定,可以看看 Pixi。熟悉 cargo 或 npm 的人,上手成本几乎为零。