甜蜜的工厂
108.96M · 2026-04-23
随着 Python 工具链的演进,越来越多开发者开始使用 uv 作为统一入口,试图替代传统组合:
由此产生一个常见说法:
这个说法方向正确,但不严谨,甚至在某些场景下会误导使用方式。
从工程角度更准确的定义是:
换句话说:
uv 本身使用 Rust 实现,因此:
例如:
uv python install 3.12
这会将 Python 安装到 uv 管理的目录(通常在用户目录下的工具缓存路径中)。
但需要注意:
python 命令,取决于 PATH 或额外配置这一点是 uv 与 pyenv 的核心差异之一
uv run script.py
特点:
uv pip install requests
uv pip install -r requirements.txt
说明:
uv venv
优势:
uv tool install ruff
uvx black .
说明:
uv tool 用于全局安装 CLI 工具uvx 用于临时执行uv python install 3.11
uv python install 3.12
但注意:
传统方式:
python script.py
uv 方式:
uv run script.py
差异本质:
python 命令不是默认入口在 uv 中:
python 命令不一定存在某些版本提供:
uv python install --default
但:
传统方式:
pip install xxx
uv 推荐:
uv tool仅在特殊场景使用:
uv pip install xxx --system
适用于:
例如:
/usr/bin/python
这类硬编码路径:
# 安装 Python(由 uv 管理)
uv python install 3.12
# 执行项目代码
uv run script.py
# 管理 CLI 工具
uv tool install ruff
# 临时运行工具
uvx black .
# CI 环境
uv pip install -r requirements.txt --system
python
pip install xxx
原因:
“uv 可以替代全局 Python”这一说法:
更严谨的表达应该是:
如果你的目标是:
那么 uv 并不是最直接的解决方案,它更适合:
本文基于 uv 当前公开行为总结,不同版本可能存在细节差异(尤其是 PATH、--default 等特性)。在生产环境中建议以实际版本文档为准进行验证。