ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

为什么用 uv 替代 pip, pixi 替代 conda?

为什么用 uv 替代 pip, pixi 替代 conda?

为什么用 pixi 替代 conda?

  1. 速度:pixi 采用 Rust 实现,比使用 Python 实现的 conda 更快
  2. 原生支持多语言与系统工具
  3. 现代配置:pixi.toml
    • 比 environment.yml(YAML)更简洁、可读性强
    • 支持定义任务(tasks),替代 Makefile 或 shell 脚本:
      [tasks]train="python train.py"lint="ruff check ."
  4. 本地化环境管理
    • Conda 默认将所有环境集中存放在全局目录(如 ~/miniconda3/envs/),
    • 而 pixi 和 uv 则借鉴了 Rust/Cargo 的本地化理念,
    • 默认在项目根目录下创建隔离的环境(如 .pixi/ 或 .venv/),
    • 实现“每个项目自带运行时”,避免依赖冲突和全局污染。

为什么用 uv 替代 pip?

  1. 速度:uv 使用 Rust 编写,性能优越,安装依赖更快
  2. 一体化工具链:uv 集成了环境管理、依赖解析、锁定机制等功能,无需切换工具
    • 传统 Python 工作流常需多个工具:
      python-mvenv .venv# 创建环境source.venv/bin/activate# 激活pipinstall-rrequirements.txt# 安装pip freeze>requirements.lock# 锁定(不精确)
    • 而 uv 一条命令搞定:
      uv venv# 创建虚拟环境uv pipinstall-rrequirements.txt# 极速安装uv lock# 生成精确的 `uv.lock`(类似 `poetry.lock`)
  3. 依赖安装:
    • pip install 只会安装缺失的包,不会清理多余的残留,导致环境污染
    • 而 uv sync 会根据锁定文件uv.lock自动增删包,保持环境纯净
  4. 完全兼容现有生态
    • 支持 requirements.txt、pyproject.toml、setup.py 等标准格式。
    • 可直接替换项目中的 pip 命令,零迁移成本。
    • 生成的标准虚拟环境,与 IDE(VS Code、PyCharm)无缝集成。

Pixi

安装

# Linux/macOScurl-fsSLhttps://pixi.sh/install.sh|sh# Windowspowershell-ExecutionPolicyByPass-c"irm -useb https://pixi.sh/install.ps1 | iex"# 安装会自动把pixi添加到环境变量中,但是需要重启终端才能使用pixi命令pixi--version# 如果安装成功,会显示pixi的版本号

从头开始初始化一个项目

pixi init# ls -a# .gitattributes .gitignore pixi.toml

添加包

pixiaddwandb# 添加 Conda 包pixiadd--pypiwandb# 添加 PyPI 包

安装依赖

pixiinstall# 状态同步:根据 pixi.toml 自动增删pixi/envs/default中的依赖,保持环境纯净

运行脚本

pixi run python script.py

uv

安装

# Linux/macOScurl-fsSLhttps://astral.sh/uv/install.sh|sh# 安装会自动把uv添加到环境变量PATH中,但是需要重启终端才能使用uv命令# echo 'export PATH="$HOME/.local/bin:$PATH"' >> /root/.bashrc# source /root/.bashrc# Windowspowershell-ExecutionPolicyByPass-c"irm https://astral.sh/uv/install.ps1 | iex"# 安装会自动把uv添加到环境变量中,但是需要重启终端才能使用uv命令uv--version# 如果安装成功,会显示uv的版本号

从头开始初始化一个项目

uv init# ls -a# .git .gitignore .python-version README.md main.py pyproject.toml

添加包

uvaddwandb

安装依赖

uvsync# 状态同步:根据 project.toml 和 uv.lock 自动增删.venv/site-packages的依赖,保持环境纯净

运行脚本

uv run script.py

注:如果uv adduv sync速度慢,可以为项目更换国内镜像源加速,在 pyproject.toml 中添加如下配置:

[tool.uv] [[tool.uv.index]] name = "tsinghua" url = "https://pypi.tuna.tsinghua.edu.cn/simple/" default = true

选择使用哪个工具

uv进阶

uv cache prune# 只移除不再被任何项目引用的包,安全系数高uv cache clean# 会删光所有缓存,下次安装慢。uv cachedir# 查看 uv 当前的缓存目录mkdir-p/hy-tmp/.uv_cache# 先设置新缓存路径(避免清理后重新下载到老路径)echo'export UV_CACHE_DIR=/hy-tmp/.uv_cache'>>~/.bashrc# 永久设置环境变量grepUV_CACHE_DIR ~/.bashrc# 查看是否已写入 bashrcuv cache cleancd/hy-tmp/tadUV_LINK_MODE=copy uvsync# .venv是虚拟环境,Python包可以硬链接,但是非Python包(Torch、CV等)不能硬链接,所以还是会占用磁盘空间
返回列表