UV 是由 Astral 团队开发的高性能 Python 环境管理器,旨在统一替代 pyenv
、pip
、venv
、pip-tools
、pipenv
等工具。
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
pip install uv
安装完成后可用 uv --version
检查是否安装成功。
UV 支持下载并管理多个 Python 版本,类似于 pyenv
。
uv python list
uv python install 3.10
uv python pin 3.10 #Pinned `.python-version` to `3.10`
✅ 切换后可立即使用对应版本的 Python 和环境进行项目初始化等操作。
建议先使用 uv python use
选择好目标版本,然后再进行项目初始化。
uv init my-project
cd my-project
uv init -p 3.11 awesome-project
初始化会自动生成:
.venv/
目录(项目虚拟环境)pyproject.toml
(项目依赖声明)uv.lock
(锁文件,锁定精确依赖)uv add
管理依赖uv add requests
uv add flask sqlalchemy
UV 不建议使用 pip install
安装依赖,因为 UV 项目已默认隔离虚拟环境且依赖受锁文件保护。
UV 采用 全局 pip 缓存机制:
pip install
机制uv.lock
文件用于保证项目依赖一致性,可类比 npm 的 package-lock.json
初始化项目后,UV 自动为项目创建 .venv
虚拟环境,无需再手动 python -m venv
。
如需手动创建虚拟环境:
#运行:
uv venv
#输出:
#Using CPython 3.13.3
#Creating virtual environment at: .venv
#Activate with: .venv\Scripts\activate
激活方式与常规 .venv
一致:
# Windows cmd运行venv环境
.venv\Scripts\activate
#退出venv环境
deactivate
UV 区分了开发依赖与生产依赖:
uv add --dev black pytest isort
在 pyproject.toml
中会区分:
[dependency-groups]
dev = [
"black>=25.1.0",
"isort>=6.0.1",
"pytest>=8.3.5",
]
在 uv.lock
中
[package.metadata.requires-dev]
dev = [
{ name = "black", specifier = ">=25.1.0" },
{ name = "isort", specifier = ">=6.0.1" },
{ name = "pytest", specifier = ">=8.3.5" },
]
生成锁文件(默认自动生成):
uv lock
部署时安装所有依赖:
uv pip sync
或仅安装生产依赖:
uv pip sync --production
功能 | UV 表现 |
---|---|
Python 多版本管理 | ✅ 支持 install/use/list |
虚拟环境 | ✅ 自动创建 .venv/ |
依赖管理 | ✅ 使用 pyproject.toml + uv.lock |
安装效率 | Rust 实现,远快于 pip |
跨平台 | ✅ 支持 macOS / Linux / Windows |
开发/生产区分 | ✅ 支持 --dev 与 --production |
UV = Python 开发的 Cargo,推荐前端 / 全栈 / 数据等开发者优先试用!
uv python install 3.11
uv python pin 3.11
uv init -p 3.11 my-fastapi-app
cd my-fastapi-app
uv add fastapi uvicorn
uv add --dev black pytest
uv pip sync