2026-09-06 16:15:18 by wst
python小组件之前用过很多款管理工具,比如conda、venv、virtualenv。最近我又发现了一款新的更好用的管理工具--uv。
uv 是 Astral(Ruff 代码检查工具团队) 用 Rust 写的新一代一体化 Python 管理工具,跨平台 Linux/macOS/Windows,目标是一把替换:pip、pip‑tools、virtualenv/venv、pyenv、pipx、poetry 大部分能力。
不需要预先有 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
可以下载、安装、切换多个 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 # 删除指定版本
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环境。
可以无缝在老项目(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
使用 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 # 打印依赖树
直接运行 python 工具包,不用全局安装。
uvx ruff check main.py #临时运行ruff
uv tool install ruff #全局安装cli工具
uv tool list
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 优势:
uv pip提速,新项目直接上完整 uv 项目模式⚠️ uv 缺点:
uv pip 替换 pip,几乎零改动,速度提升。
在探索Python开发的路上,我们一起前行!
--- 爱学习,爱分享的小鲤鱼。