新时代的python管理工具(uv)的基本使用方法

2026-09-06 16:15:18 by wst

python小组件

楔子

之前用过很多款管理工具,比如conda、venv、virtualenv。最近我又发现了一款新的更好用的管理工具--uv。

uv 是 Astral(Ruff 代码检查工具团队) 用 Rust 写的新一代一体化 Python 管理工具,跨平台 Linux/macOS/Windows,目标是一把替换:pippip‑toolsvirtualenv/venvpyenvpipx、poetry 大部分能力。

最大亮点:速度比 pip /poetry 快 10‑100 倍,并行下载、高性能依赖解析、全局缓存复用包文件,磁盘占用更低Astral

 使用方法

1.安装

不需要预先有 Python,直接脚本安装(推荐)

# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows PowerShell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

也可以 pip 安装:

pip install uv

验证:uv --version

2.uv 的五大核心能力

1)Python 解释器版本管理(替代 pyenv)

可以下载、安装、切换多个 Python 版本,不需要系统包管理器CSDN博...。

uv python list                # 查看本地+可安装的python版本
uv python install 3.12.6      # 下载安装Python3.12
uv python pin 3.12            # 当前项目固定使用3.12版本
uv python uninstall 3.11      # 删除指定版本

2)虚拟环境管理(替代 venv /virtualenv)

uv venv                       # 在当前目录创建 .venv
uv venv --python 3.12         # 指定python版本创建虚拟环境

# 激活和原生venv完全一样
# Linux/macOS
source .venv/bin/activate
# Windows cmd
.venv\Scripts\activate.bat

特色:很多时候你甚至不用手动激活uv run xxx会自动调用项目内.venv环境。

 

3)兼容 pip 语法模式:uv pip(替代 pip、pip‑tools)

可以无缝在老项目(requirements.txt)上使用 uv,直接把 pip 替换成 uv pip,速度暴涨,零改造。

uv pip install requests
uv pip install -r requirements.txt
uv pip freeze

# 等价 pip‑tools 的 pip‑compile,生成锁定完整间接依赖的requirements.txt
uv pip compile requirements.in -o requirements.txt

# 等价 pip‑sync:同步环境,删掉环境多余包
uv pip sync requirements.txt

4)现代项目管理模式(对标 poetry / PDM)

使用 pyproject.toml + uv.lock,区分生产依赖、开发依赖,lock 文件锁定全部间接依赖版本,支持 Cargo 风格 workspace 多包项目PyPI。

完整示例流程:

uv init demo_project          # 创建新项目,生成pyproject.toml
cd demo_project

uv add requests               # 添加生产依赖
uv add --dev pytest ruff      # 添加开发依赖
uv lock                       # 生成 uv.lock,锁定所有依赖确切版本
uv sync                       # 根据lock文件安装全部依赖到虚拟环境

uv run python main.py         # 在项目虚拟环境运行脚本,无需手动activate
uv run pytest                 # 运行开发工具

uv export -f requirements.txt --output requirements.txt #导出兼容老项目
uv tree                       # 打印依赖树

5)uv tool /uvx(替代 pipx)

直接运行 python 工具包,不用全局安装。

uvx ruff check main.py     #临时运行ruff
uv tool install ruff       #全局安装cli工具
uv tool list

3.打包发布

uv build      #构建 sdist/wheel
uv publish    #发布到pypi

总结

uv 和其他工具对比表:

工具 配置文件 版本管理 虚拟环境 lock 锁定 兼容 requirements.txt 底层
pip+venv requirements.txt 内置 venv Python
poetry pyproject.toml+poetry.lock 内置 可导出 Python
PDM pyproject.toml+pdm.lock 内置 Python
uv pyproject.toml+uv.lock 内置 双向导入导出 Rust
conda environment.yml 有限兼容 Rust/C++

✅ uv 优势:

  1. 速度碾压,大项目依赖解析、安装差距非常明显
  2. 单工具搞定:python 版本、虚拟环境、包安装、项目管理、工具运行;不用同时装 pyenv+venv+pip‑tools+poetry
  3. 平滑迁移:老项目可以先用uv pip提速,新项目直接上完整 uv 项目模式
  4. 跨平台行为统一,Windows 体验比 pyenv 好很多

⚠️ uv 缺点:

  1. 对于 C/C++ 底层复杂二进制依赖(pytorch、cuda、科学计算)不如 conda;只聚焦 PyPI 包
  2. 生态较新,部分极老的遗留项目可能遇到边界兼容问题
  3. uv.lock 不能直接被 poetry 读取(可以导出 requirements.txt 互通)

选型建议

  1. 老项目,继续使用 requirements.txt:直接用 uv pip 替换 pip,几乎零改动,速度提升。
  2. 新建业务项目 / Python 库:优先 uv,比 poetry 更快,功能更一体化。
  3. 深度学习、大量非 Python 系统依赖:继续用 miniconda。
  4. CI 流水线 uv 非常适合,缓存机制可以大幅缩短 CI 构建时间。

 

 

在探索Python开发的路上,我们一起前行!

--- 爱学习,爱分享的小鲤鱼。


Comments(0) Add Your Comment

Not Comment!