
uv 是一款用 Rust 编写的现代化、高性能 Python 包管理器与安装工具。与传统的 Python 包管理工具(如 pip)相比,uv 有着显著的优势。
uv 的安装速度极快,在无缓存的情况下,它比 pip 快 8 - 10 倍,有缓存时甚至可达 80 - 115 倍。例如,安装一个包含 200 个依赖项的项目,uv 仅需 3 秒,而传统工具可能需要几分钟。这得益于 Rust 语言高效的性能、并行下载机制、全局包缓存以及优化的依赖解析算法。
uv 整合了 Python 项目管理的多个关键环节。它不仅能管理包,替代 pip、pip - tools 的功能,支持如uv pip install等兼容命令,还能自动创建虚拟环境(.venv),无需手动激活环境,通过uv run即可直接执行脚本。同时,uv 具备 Python 版本管理功能,使用uv python install就能自动下载指定版本的 Python,类似于pyenv的作用。此外,uv还能生成跨平台的uv.lock文件用于依赖锁定,确保环境一致性,并且能像pipx一样通过uvtool install隔离安装命令行工具 。
uv 对现有项目十分友好,它支持requirements.txt、pyproject.toml文件,能让现有项目无缝迁移。同时,uv 还提供依赖版本覆盖、跨平台解析策略等高级功能,并且支持单文件脚本的依赖管理(基于 PEP 723),使用uv run就能自动安装所需依赖。
在 Windows 系统中,有多种方式可以安装 uv,以下为你详细介绍。
这是兼容性最佳的安装方式,直接使用 Python 自带的pip进行安装。在命令提示符(CMD)或 PowerShell 中输入以下命令:
pip install uv
安装完成后,uv会被添加到系统环境变量中,这样即便切换虚拟环境,也能正常使用uv。
打开 PowerShell,以管理员身份运行以下命令:
irm https://astral.sh/uv/install.ps1 | iex
该脚本会自动从官方获取安装文件并进行安装操作。
如果你已经安装了pipx,可以通过以下命令安装 uv:
pipx install uv
需要注意的是,若通过一些包管理器(如 Chocolatey)安装,可能获取到的版本较旧,所以建议优先使用pip或官方脚本进行安装 。
安装完成后,可以在命令行中输入uv --version来验证是否安装成功。如果安装正确,会显示 uv 的版本号,例如uv 0.4.23 。
在项目目录下,使用以下命令创建虚拟环境,默认会创建一个名为.venv的目录:
uv venv .venv
创建完成后,在 Windows 系统下,通过以下命令激活虚拟环境:
.venv\Scripts\activate
激活虚拟环境后,命令行的前缀会显示当前环境的名称,例如(.venv) C:\your\project\path> 。
在激活的虚拟环境中,使用uv pip install命令来安装 Python 包,语法与pip install基本一致,但速度更快。例如,安装requests和pandas包:
uv pip install requests pandas
如果需要安装指定版本或满足特定版本约束的包,也可以像使用pip一样操作,例如安装numpy的版本大于等于 1.21:
uv pip install "numpy>=1.21"
uv 可以根据pyproject.toml和uv.lock文件自动安装项目所需的依赖。在项目目录下,确保已经存在这两个文件,然后激活虚拟环境,执行以下命令即可自动安装所有依赖:
uv sync
若项目中还没有pyproject.toml文件,可以使用uv init命令来初始化项目,它会生成pyproject.toml和uv.lock文件。如果项目中已经有依赖需要添加到pyproject.toml文件中,可以使用uv add命令,例如添加ruff依赖:
uv add ruff
使用uv run命令可以在虚拟环境中运行 Python 脚本,并且会自动处理环境和依赖问题。例如,运行项目中的main.py脚本:
uv run main.py
uv 支持安装不同版本的 Python。例如,要安装 Python 3.10、3.11 和 3.12 版本,可以使用以下命令:
uv python install 3.10 3.11 3.12
安装完成后,在创建虚拟环境时,可以通过--python参数指定使用的 Python 版本,如:
uv venv --python 3.12.0
uv 作为一款新兴的 Python 工具,为开发者在包管理、虚拟环境创建、Python 版本管理等方面提供了高效且便捷的解决方案。在 Windows 系统上,通过简单的安装步骤和丰富的基础用法,就能轻松体验 uv 带来的优势,提升 Python 项目开发的效率。无论是新项目的搭建,还是现有项目的优化,uv 都值得一试,赶紧动手实践起来吧!



