前言
pixi 基于 uv 开发,拥有与 uv 一样的速度,还支持一系列额外的功能,例如:
- 完全替代 conda,兼容 conda 的所有生态,可以在虚拟环境中安装 ffmpeg、cuda-toolkit 等系统依赖,当然也可以安装 python;
- 多语言环境,不仅可以管理 python,还能管理 Java、Node.js 等;
- 任务系统,类似 npm run,可以将繁琐的命令通过 task 一键启动。
相比于 conda,pixi 使用 lock 文件锁死当前环境安装的依赖版本,任何人可以使用 pixi 还原出完全一致的虚拟环境,有利于实验复现。
所以十分推荐使用 pixi 一站式代替 conda、poetry、uv、venv 等所有工具。
食用方法
首先安装 pixi 请参照官方教程:https://pixi.prefix.dev/latest/installation/
安装完成后,使用以下命令创建 pixi 项目:
pixi init
这个命令会在当前目录创建文件 pixi.toml,内容大致如下:
[workspace]
authors = ["Haven Madray <xxx@gmail.com>"]
channels = ["conda-forge"]
name = "test"
platforms = ["linux-64"]
version = "0.1.0"
[tasks]
[dependencies]
这里需要修改 platforms 字段为:
platforms = [
"linux-64",
{ name = "linux-64-cuda", platform = "linux-64", cuda = "12.9" },
]意思是,默认包含一个普通的 linux-64 环境,即 Linux 下 x86-64 架构的环境,这里新增一个名为 linux-64-cuda 、基于 linux-64 、且已支持 CUDA 版本 12.9 的环境。
我这里环境提供的 PPU 的源需要登录使用,使用以下命令保存认证信息:
pixi auth login pypi.aistack-dev.com --username xxx --password xxx
这样可以避免把认证信息保存到项目里。
接下来需要添加 python 和 setuptools:
pixi add 'python>=3.12,<3.13'
pixi add 'setuptools>=77'
添加了 python 之后,就可以添加 pypi 上的 Python 依赖了。例如添加 numpy :
pixi add --pypi numpy若需指定版本:
pixi add --pypi 'numpy>=1,<2'然后给 pixi.toml 追加如下内容:
[feature.cuda]
# 配置 cuda 系列依赖基于 linux-64-cuda 环境
platforms = ["linux-64-cuda"]
[feature.cuda.dependencies]
# 适用于 cuda 环境的系统依赖
cuda-toolkit = ">=12.9,<12.10" # 使用 cuda-toolkit 12.9
cudnn = ">=9,<10" # 使用 cudnn 9
[feature.cuda.pypi-dependencies]
# 适用于 cuda 环境的 python 依赖
torch = { version = ">=2.9.0,<2.10", index = "https://download.pytorch.org/whl/cu129" } # 从官方源中添加适用于 cuda 12.9 的 torch
torchvision = { version = ">=0.24.0, <0.25", index = "https://download.pytorch.org/whl/cu128" } # 从官方源中添加适用于 cuda 12.9 的 torchvision
onnxruntime-gpu = ">=1.23.0, <1.24" # 添加适用于 cuda 的 onnxruntime
[feature.cpu.pypi-dependencies]
# 适用于 cpu 环境的 python 依赖
torch = { version = ">=2.9.0,<2.10", index = "https://download.pytorch.org/whl/cpu" } # 从官方源中添加适用于 cpu 的 torch
torchvision = { version = ">=0.24.0, <0.25", index = "https://download.pytorch.org/whl/cpu" } # 从官方源中添加适用于 cpu 的 torchvision
onnxruntime = ">=1.23.0, <1.24" # 添加适用于 cpu 的 onnxruntime
[feature.ppu.pypi-dependencies]
# 适用于 ppu 环境的 python 依赖,若使用常规 cuda 环境需删除这一节
torch = { version = "==2.9.0+ppu2.0.0.oe", index = "https://pypi.aistack-dev.com/repository/cu129_index/simple/" } # 从 ppu 源中添加适用于 ppu 的 torch
torchvision = { version = "==0.24.0+ppu2.0.0", index = "https://pypi.aistack-dev.com/repository/pypi_index/simple/" } # 从 ppu 源中添加适用于 ppu 的 torchvision
onnxruntime-gpu = { version = "==1.23.2+ppu2.0.0.oe", index = "https://pypi.aistack-dev.com/repository/pypi_index/simple/" } # 从 ppu 源中添加适用于 ppu 的 onnxruntime
[pypi-options]
no-build-isolation = ["torchvision"] # 解决 torchvision 安装失败
[environments]
cpu = { features = ["cpu"] } # 适用于 cpu 的环境
cuda = { features = ["cuda"] } # 适用于 cuda 的环境
ppu = { features = ["ppu"] } # 适用于 ppu 的环境,若使用常规 cuda 环境需删除这一行
default = { features = ["ppu"] } # 项目默认使用 ppu,若使用常规 cuda 环境,这一行的 ppu 需换成 cuda 或 cpu
以上内容作用如下:
- 为项目添加名为
cpu、cuda、ppu三个系列依赖 - 为项目添加名为
cpu、cuda、ppu三个环境,并引用对应名称的系列依赖。
使用以下命令安装环境依赖:
pixi install # 安装默认环境,即 ppu
pixi install -e cuda # 安装适用于 cuda 的环境
关于让 pixi 与 PyCharm 联动,请参阅官方文档:JetBrains - Pixi