一个用 Rust 编写的、速度极快的 Python 包和项目管理器
一个用 Rust 编写的、速度极快的 Python 包和项目管理器。
- 全面替代 pip、pip-tools、pipx等工具
- 速度比 pip 快 10–100 倍
- 支持通用锁定文件、Cargo 风格工作空间、内联依赖元数据
- 安装和管理 Python 版本
- 运行与安装以 Python 包形式发布的工具
- 提供与 pip 兼容的命令行,性能更高
- 全局缓存,依赖去重,节省磁盘
- 无需 Rust 或 Python,通过 curl 即可安装
- 支持 macOS、Linux、Windows
安装
支持 macOS、Linux、Windows。
# Homebrewbrewinstalluv# macOS & Linuxcurl-LsSfhttps://astral.sh/uv/install.sh|sh# wget -qO- https://astral.sh/uv/install.sh | sh# Windowspowershell-ExecutionPolicyByPass-c"irm https://astral.sh/uv/install.ps1 | iex"自动补全
启用 uv 命令的 shell 自动补全功能:
# bashecho'eval "$(uv generate-shell-completion bash)"'>>~/.bashrc# zshecho'eval "$(uv generate-shell-completion zsh)"'>>~/.zshrc# fishecho'uv generate-shell-completion fish | source'>~/.config/fish/completions/uv.fish# PowerShellif(!(Test-Path-Path$PROFILE)){New-Item-ItemTypeFile-Path$PROFILE-Force}Add-Content-Path$PROFILE-Value'(& uv generate-shell-completion powershell) | Out-String | Invoke-Expression'然后重启 shell 或加载 shell 配置文件。
镜像源
国内镜像源:
- 中科大 USTC https://mirrors.ustc.edu.cn/pypi/simple
- 阿里云 https://mirrors.aliyun.com/pypi/simple
- 清华 TUNA https://pypi.tuna.tsinghua.edu.cn/simple
- 华为云 https://repo.huaweicloud.com/repository/pypi/simple
# 安装依赖时指定uvsync--index-url https://pypi.tuna.tsinghua.edu.cn/simple# uv 多源配置(pyproject.toml)[[tool.uv.index]]url="https://mirrors.ustc.edu.cn/pypi/simple"default=true[[tool.uv.index]]url="https://mirrors.aliyun.com/pypi/simple"[[tool.uv.index]]url="https://pypi.tuna.tsinghua.edu.cn/simple"使用
Python 管理
安装和管理 Python。
# ==安装 Python==## 安装最新版本uv pythoninstall## 安装特定版本uv pythoninstall3.12## 重新安装(重新安装所有)uv pythoninstall--reinstall# ==查看 Python==## 查看可用和已安装uv python list# 仅显示已安装的uv python list --only-installed# ==查找 Python==## 查找已安装的 Python 版本uv pythonfind## 查找大于 3.11 Python 版本uv pythonfind'>=3.11'## 仅查找系统 Python 解释器uv pythonfind--system# ==升级 Python==# 升级到最新受支持的补丁版本uv python upgrade3.12# 升级所有uv python upgrade# ==锁定到特定的 Python 版本==# 当前项目锁定为使用特定的 Python 版本(.python-version)uv python pin# 在用户配置目录中创建全局文件uv python pin--global# ==卸载 Python==# 卸载 Python 版本uv python uninstall3.12# 卸载所有uv python uninstall--all项目
创建和开发 Python 项目
# 初始化项目## 最新 Python 版本初始化uv init## 指定 Python 版本初始化uv init--python3.12# ==管理依赖==## 添加生产依赖uvaddrequests## 添加开发依赖uvadd--devpytest## 从requirements.txt文件迁移uvadd-rrequirements.txt-cconstraints.txt## 移除依赖uv remove requests## 同步依赖uvsync## 依赖项锁定文件uv lock## 升级软件包uv lock --upgrade-package requests# ==项目命令==## 在项目环境中运行命令uv run# #查看项目的依赖关系树uv tree## 将项目构建到分发存档中uv build## 将项目发布到软件包索引uv publish项目结构
.├── .venv │ ├── bin │ ├── lib │ └── pyvenv.cfg ├── .python-version ├── README.md ├── main.py ├── pyproject.toml └── uv.lockpyproject.toml:项目的元数据.python-version:项目的 Python 版本.venv:项目的虚拟环境(隔离)uv.lock:跨平台的锁定文件,项目依赖项(已安装的依赖版本)
虚拟环境
# ==创建虚拟环境==## 默认uv venv[.venv]## 指定版本uv venv--python3.12# ==激活环境==## macOS/Linuxsource.venv/bin/activate## Windows.venv\Scripts\activate## 退出虚拟环境deactivate# ==替换pip==## 将软件包安装到当前环境中uv pipinstall## 显示已安装软件包的详细信息uv pip show## 列出已安装的软件包及其版本uv pip freeze## 检查当前环境中是否安装了兼容的软件包uv pip check## 列出已安装的软件包uv pip list## 卸载软件包uv pip uninstall## 查看环境的依赖关系树uv pip tree脚本
执行 Python 脚本。
# 运行脚本uv run main.py# 向脚本添加依赖项uvadd--scriptmain.py requests# 移除脚本中的依赖项uv remove--scriptmain.py工具
运行和安装发布到 Python 包索引的工具,例如ruff或black。
# 在临时环境中运行工具uvx/ uv tool run# 安装一个用户级工具uv toolinstall# 卸载工具uv tool uninstall# 列出已安装的工具uv tool list# 更新 shell 以包含工具可执行文件uv tool update-shell管理检查
uv 的状态,例如缓存、存储目录或执行自我更新:
# 删除缓存条目uv cache clean# 删除过期的缓存条目uv cache prune# 显示 UV 缓存目录路径uv cachedir# 显示 UV 工具目录路径uv tooldir# 显示已安装的 Python 版本路径uv pythondir# 将 uv 更新到最新版本uv self update卸载
如果需要从系统中卸载uv,请按照以下步骤操作:
清理已存储的数据(可选):
uv cache cleanrm-r"$(uv pythondir)"rm-r"$(uv tooldir)"删除 uv、uvx 和 uvw 二进制文件:
# Homebrewbrew uninstall uv# macOS and Linuxrm~/.local/bin/uv ~/.local/bin/uvx# Windowsrm$HOME\.local\bin\uv.exerm$HOME\.local\bin\uvx.exerm$HOME\.local\bin\uvw.exe
对比
| 工具 | 功能 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|---|
| virtualenv | 仅创建独立的 Python 环境 | 轻量,简单,灵活 | 依赖管理需要手动配置 | 适合虚拟环境的简单项目 |
| pipenv | 自动管理虚拟环境及依赖 | 管理包依赖、虚拟环境统一,锁定依赖 | 较为重,部分情况下性能较差 | 适合现代 Python 项目,需要依赖锁定的项目 |
| miniconda | Python 和其他语言的环境管理工具 | 支持多语言包管理,特别适合科学计算和数据分析 | 安装包速度较慢,体积较大 | 适合需要跨语言支持的科学计算或数据项目 |
| uv | 高效的环境、依赖管理工具,提供 Python 版本管理及脚本运行等功能 | 更快的性能,跨平台支持,自动化的依赖管理,通用锁定文件 | 新工具,生态尚不成熟,可能会有不稳定性 | 适合需要高效管理、项目复杂度较高的开发者 |
