核心概念:uv 是什么?
uv 是一个用 Rust 编写的高速、一体化的 Python 包管理器和项目工作流工具。可以把它看作是 pip、pip-tools、virtualenv、pytest 等工具的超级替代品。
它的目标是提供极致的速度和无缝的开发者体验,由 Astral 公司开发(这家公司同时也是 Ruff 的创造者)。
1. uv 的主要功能和使用
安装 uv
在 macOS 和 Linux 上,通常使用一键安装脚本:
uv 是 Astral 公司开发的基于 Rust 的高速 Python 包管理器及项目工作流工具,旨在替代 pip、virtualenv、poetry 等传统工具。支持一键安装,可快速创建虚拟环境、管理依赖(通过 pyproject.toml 和 uv.lock)、运行脚本及全局工具(uvx)。相比传统工具,uv 具有极速解析安装、一体化工作流、跨平台兼容等优势,能显著提升 Python 开发效率。
uv 是一个用 Rust 编写的高速、一体化的 Python 包管理器和项目工作流工具。可以把它看作是 pip、pip-tools、virtualenv、pytest 等工具的超级替代品。
它的目标是提供极致的速度和无缝的开发者体验,由 Astral 公司开发(这家公司同时也是 Ruff 的创造者)。
在 macOS 和 Linux 上,通常使用一键安装脚本:
curl -LsSf https://astral.sh/uv/install.sh | sh
安装后,重启你的终端或运行 source ~/.bashrc(或对应 shell 的配置文件)。
在 Windows 上,可以使用 Powershell:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
或者你也可以通过 pip 安装(虽然不推荐,因为 uv 的目标是管理 Python 环境,而不是被 Python 管理):
pip install uv
uv 可以创建和管理虚拟环境,速度非常快。
source .venv/bin/activate.venv\Scripts\activate创建虚拟环境:
# 在当前目录创建 .venv 虚拟环境
uv venv
# 指定 Python 版本和路径创建虚拟环境
uv venv --python 3.11
uv venv --python 3.12 /path/to/venv
uv 的核心功能是快速安装 Python 包。
将依赖安装到当前环境:
# 如果你已经激活了一个虚拟环境,可以直接安装
uv install requests
从文件安装依赖:
# 类似于 `pip install -r requirements.txt`
uv pip install -r requirements.txt
# 或者使用 uv 自己的方式(更推荐)
uv add -r requirements.txt
安装单个包:
uv add requests
uv 可以作为项目依赖管理器,类似于 Poetry 或 PDM,它会使用 pyproject.toml。
uv 在运行 uv add 或 uv sync 时会自动生成/更新 uv.lock 文件。运行项目脚本:
uv run python my_script.py
# 如果项目依赖了某个命令行工具,比如 `pytest`
uv run pytest
同步依赖(安装 pyproject.toml 中的所有包):
uv sync
添加依赖:
# 这会自动更新 pyproject.toml 并安装包
uv add flask
uv add pytest --dev # 添加开发依赖
初始化一个新项目:
uv init my-project
cd my-project
uvx 是 uv 工具集中的一个命令,它的全称是 UV eXecute。
它的核心功能是:无需预先安装,直接运行一个 Python 命令行工具(包)。
可以把它看作是 pipx 的极速替代品。
当你需要临时运行一个 Python 编写的命令行工具(例如 httpie, youtube-dl, black, mypy 等),但又不想把它安装到你的项目或全局环境中时,uvx 是完美的选择。
# 运行最新版本的 httpie
uvx httpie
# 运行特定版本的 black 代码格式化工具
uvx "black==23.0.0" --check .
# 运行一个 GitHub 仓库中的工具
uvx "git+https://github.com/astral-sh/ruff.git" check .
# 从本地目录运行一个工具
uvx "./my-local-tool"
uvx <package> 时,uv 会:
uv 会直接从缓存中启动它,速度极快。网络与工具:
uvx http --version # 使用 HTTPie
uvx cowsay "Hello!" # 趣味工具
开发工具:
uvx pre-commit run -a # 运行 git pre-commit hooks
uvx pytest # 运行测试(如果项目没安装 pytest)
代码格式化与检查:
uvx black . # 格式化代码
uvx isort . # 排序 import
uvx ruff check . # 快速代码检查
uvx mypy . # 类型检查
uv 工具解决了包管理、虚拟环境、运行脚本、运行全局工具等多个问题,无需在 pip、venv、pipx、poetry 之间切换。requirements.txt 和 pyproject.toml,可以无缝接入现有项目。| 传统工作流 | uv 工作流 | 说明 |
|---|---|---|
python -m venv .venv | uv venv | 创建虚拟环境 |
pip install requests | uv add requests | 安装项目依赖 |
pip install -r requirements.txt | uv sync | 安装所有依赖 |
pipx run black | uvx black | 运行一个全局的 Python 工具 |
poetry add pytest --dev | uv add pytest --dev | 添加开发依赖 |
poetry run python script.py | uv run python script.py | 在项目环境中运行脚本 |
总而言之,uv 是管理你项目依赖和环境的核心工具,而 uvx 是你快速、临时运行各种 Python 命令行工具的利器。两者结合,极大地提升了 Python 开发的效率和体验。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online