跳转至

uv

简介

uv 是一款由 Charlie Marsh 使用 Rust 语言编写的高性能 Python 包管理器,旨在解决传统工具(如 pip、venv)在速度和效率上的痛点。它的设计目标是成为 Python 生态中的现代化工具链核心组件,提供更快的依赖解析、安装速度,并与现有工具(如 pip、poetry)兼容。

安装 uv

通过脚本安装

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

通过pip安装

# With pip.
pip install uv

# Or pipx.
pipx install uv

自更新

uv self update

验证安装

uv --version

管理虚拟环境

# 默认创建 .venv 目录
uv venv  

# 使用 --prefix 指定环境目录:
uv venv --prefix ./myenv

# 指定 Python 版本
uv venv --python 3.11  

# 指定路径创建虚拟环境
uv venv --python 3.11 /root/.venv

# 创建轻量级虚拟环境(无需复制标准库):
uv venv --seed

# 清除所有缓存文件
uv clean  

# 激活虚拟环境
source /root/.venv/bin/activate

# 退出虚拟环境
deactivate

安装依赖包

# 安装单个包
uv pip install flask

# 查看包信息
uv pip show fastapi

# 升级已有包
uv pip install --upgrade uvicorn

# 从文件安装
uv pip install -r requirements.txt  

# 查看当前安装的包
uv pip list

# 卸载包
uv pip uninstall requests

# 导出依赖
uv pip freeze > requirements.txt

# 使用 --resolution=highest 优先安装最新版本,减少冲突检查:
uv pip install --resolution=highest pandas

管理Python版本

# 列出已安装和当前使用的版本
uv python list

# 显示所有可供下载的补丁版本
uv python list --all-versions

# 只显示已安装的版本
uv python list --only-installed

# 安装最新的稳定版 (如果尚未安装)
uv python install

# 安装特定版本
uv python install 3.11.5

# 安装 3.10 系列的最新可用版
uv python install 3.10

# 查看python管理的目录,受 UV_PYTHON_INSTALL_DIR 影响
uv python dir

# 固定项目 Python 版本, 会在当前目录创建或更新 .python-version 文件,声明项目应使用的 Python 版本。
# 之后 uv venv, uv run, uv sync 等命令会优先查找并使用这个版本。
uv python pin 3.11

# 卸载 Python 版本 
uv python uninstall 3.10.8

# 卸载 3.11 系列所有已安装版本
uv python uninstall 3.11

管理项目的依赖

uv pip install ... 它是全局/当前虚拟环境的 pip 替代品, 安装到当前激活的虚拟环境(或全局)。uv add ...会自动修改 pyproject.toml 并更新 uv.lock,它自动创建/使用项目自带的 .venv 并安装进去。

# 向当前项目中添加 Python 包,可以指定版本,自动处理依赖关系
uv add numpy
uv add "requests>=2.28.0"

# 从当前环境中移除已安装的 Python 包,可以同时移除多个包
uv remove numpy
uv remove requests pandas

# 根据依赖文件(如 requirements.txt 或 pyproject.toml)同步环境中的包
# 可以移除未在定义文件中列出的包,确保环境中的包与定义文件一致
uv sync
uv sync -r requirements.txt

# 生成或更新锁文件,锁定项目依赖的确切版本。
uv lock
uv lock -r requirements.txt -o requirements.lock

# 在 UV 管理的环境中运行 Python 脚本或命令。不需要手动激活环境
uv run python script.py
uv run pytest

# 使用 uv 安装项目依赖
uv pip install -e .

#  安装requirements.txt中的依赖
uv pip install -r requirements.txt

开始第一个项目

~  uv init example
Initialized project `example` at `/home/tinker/example`
~  cd example
example  uv add ruff
Using CPython 3.12.3 interpreter at: /usr/bin/python3.12
Creating virtual environment at: .venv
Resolved 2 packages in 1.57s
 Preparing packages... (0/1)
Prepared 1 package in 26.07s
Installed 1 package in 50ms
 + ruff==0.14.7
example  uv run ruff check
All checks passed!
example   uv lock 
Resolved 2 packages in 48ms
example  uv sync  
Resolved 2 packages in 36ms
Audited 1 package in 3ms

参考资料