一个用 Rust 编写的、速度极快的 Python 包和项目管理器

一个用 Rust 编写的、速度极快的 Python 包和项目管理器。

  • 全面替代 pip、pip-tools、pipx等工具
  • 速度比 pip 快 10--100 倍
  • 支持通用锁定文件、Cargo 风格工作空间、内联依赖元数据
  • 安装和管理 Python 版本
  • 运行与安装以 Python 包形式发布的工具
  • 提供与 pip 兼容的命令行,性能更高
  • 全局缓存,依赖去重,节省磁盘
  • 无需 Rust 或 Python,通过 curl 即可安装
  • 支持 macOS、Linux、Windows

安装

支持 macOS、Linux、Windows。

shell 复制代码
# Homebrew
brew install uv

# macOS & Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# wget -qO- https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

自动补全

启用 uv 命令的 shell 自动补全功能:

shell 复制代码
# bash
echo 'eval "$(uv generate-shell-completion bash)"' >> ~/.bashrc

# zsh
echo 'eval "$(uv generate-shell-completion zsh)"' >> ~/.zshrc

# fish
echo 'uv generate-shell-completion fish | source' > ~/.config/fish/completions/uv.fish

# PowerShell
if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}
Add-Content -Path $PROFILE -Value '(& uv generate-shell-completion powershell) | Out-String | Invoke-Expression'

然后重启 shell 或加载 shell 配置文件。

镜像源

国内镜像源:

shell 复制代码
# 全局指定
uv config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装依赖时指定
uv sync --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。

shell 复制代码
# ==安装 Python==
## 安装最新版本
uv python install
## 安装特定版本
uv python install 3.12
## 重新安装(重新安装所有)
uv python install --reinstall

# ==查看 Python==
## 查看可用和已安装
uv python list
# 仅显示已安装的
uv python list --only-installed

# ==查找 Python==
## 查找已安装的 Python 版本
uv python find
## 查找大于 3.11 Python 版本
uv python find '>=3.11'
## 仅查找系统 Python 解释器
uv python find --system

# ==升级 Python==
# 升级到最新受支持的补丁版本
uv python upgrade 3.12
# 升级所有
uv python upgrade

# ==锁定到特定的 Python 版本==
# 当前项目锁定为使用特定的 Python 版本(.python-version)
uv python pin
# 在用户配置目录中创建全局文件
uv python pin --global

# ==卸载 Python==
# 卸载 Python 版本
uv python uninstall 3.12
# 卸载所有
uv python uninstall --all

项目

创建和开发 Python 项目

shell 复制代码
# 初始化项目
## 最新 Python 版本初始化
uv init
## 指定 Python 版本初始化
uv init --python 3.12

# ==管理依赖==
## 添加生产依赖
uv add requests
## 添加开发依赖
uv add --dev pytest
## 从requirements.txt文件迁移
uv add -r requirements.txt -c constraints.txt
## 移除依赖 
uv remove requests
## 同步依赖
uv sync
## 依赖项锁定文件
uv lock
## 升级软件包
uv lock --upgrade-package requests

# ==项目命令==
## 在项目环境中运行命令
uv run
# #查看项目的依赖关系树
uv tree
## 将项目构建到分发存档中
uv build
## 将项目发布到软件包索引
uv publish

项目结构

shell 复制代码
.
├── .venv
│    ├── bin
│    ├── lib
│    └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
  • pyproject.toml:项目的元数据
  • .python-version:项目的 Python 版本
  • .venv:项目的虚拟环境(隔离)
  • uv.lock:跨平台的锁定文件,项目依赖项(已安装的依赖版本)

虚拟环境

shell 复制代码
# ==创建虚拟环境==
## 默认
uv venv [.venv]
## 指定版本
uv venv --python 3.12

# ==激活环境==
## macOS/Linux
source .venv/bin/activate
## Windows
.venv\Scripts\activate
## 退出虚拟环境
deactivate

# ==替换pip==
## 将软件包安装到当前环境中
uv pip install
## 显示已安装软件包的详细信息
uv pip show
## 列出已安装的软件包及其版本
uv pip freeze
## 检查当前环境中是否安装了兼容的软件包
uv pip check
## 列出已安装的软件包
uv pip list
## 卸载软件包
uv pip uninstall
## 查看环境的依赖关系树
uv pip tree

脚本

执行 Python 脚本。

shell 复制代码
# 运行脚本
uv run main.py

# 向脚本添加依赖项
uv add --script main.py requests

# 移除脚本中的依赖项
uv remove --script main.py

工具

运行和安装发布到 Python 包索引的工具,例如ruff或black。

shell 复制代码
# 在临时环境中运行工具
uvx/ uv tool run
# 安装一个用户级工具
uv tool install
# 卸载工具
uv tool uninstall
# 列出已安装的工具
uv tool list
# 更新 shell 以包含工具可执行文件
uv tool update-shell

管理检查

uv 的状态,例如缓存、存储目录或执行自我更新:

shell 复制代码
# 删除缓存条目
uv cache clean
# 删除过期的缓存条目
uv cache prune
# 显示 UV 缓存目录路径
uv cache dir
# 显示 UV 工具目录路径
uv tool dir
# 显示已安装的 Python 版本路径
uv python dir
# 将 uv 更新到最新版本
uv self update

卸载

如果需要从系统中卸载 uv,请按照以下步骤操作:

  1. 清理已存储的数据(可选):

    shell 复制代码
    uv cache clean
    rm -r "$(uv python dir)"
    rm -r "$(uv tool dir)"
  2. 删除 uv、uvx 和 uvw 二进制文件:

    shell 复制代码
    # Homebrew
    brew uninstall uv
    
    # macOS and Linux
    rm ~/.local/bin/uv ~/.local/bin/uvx
    
    # Windows
    rm $HOME\.local\bin\uv.exe
    rm $HOME\.local\bin\uvx.exe
    rm $HOME\.local\bin\uvw.exe

对比

工具 功能 优点 缺点 适合场景
virtualenv 仅创建独立的 Python 环境 轻量,简单,灵活 依赖管理需要手动配置 适合虚拟环境的简单项目
pipenv 自动管理虚拟环境及依赖 管理包依赖、虚拟环境统一,锁定依赖 较为重,部分情况下性能较差 适合现代 Python 项目,需要依赖锁定的项目
miniconda Python 和其他语言的环境管理工具 支持多语言包管理,特别适合科学计算和数据分析 安装包速度较慢,体积较大 适合需要跨语言支持的科学计算或数据项目
uv 高效的环境、依赖管理工具,提供 Python 版本管理及脚本运行等功能 更快的性能,跨平台支持,自动化的依赖管理,通用锁定文件 新工具,生态尚不成熟,可能会有不稳定性 适合需要高效管理、项目复杂度较高的开发者
相关推荐
qq_342295822 小时前
Go语言怎么嵌入静态文件_Go语言embed嵌入文件教程【秒懂】
jvm·数据库·python
耿雨飞2 小时前
Python 后端开发技术博客专栏 | 第 04 篇 Python 内存管理与垃圾回收 -- 从引用计数到分代回收
开发语言·python·垃圾回收
雾岛听蓝2 小时前
Qt 输入与多元素控件详解
开发语言·经验分享·笔记·qt
qq_206901392 小时前
如何在Linux上源码编译安装MySQL_CMake配置与依赖包安装
jvm·数据库·python
执笔画流年呀2 小时前
多线程及其特性
java·服务器·开发语言
良木生香2 小时前
【C++初阶】C++编程基石:编码表&&STL的入门指南
c语言·开发语言·数据结构·c++·算法
达帮主2 小时前
19.1 C语言链表 -- 简单
c语言·开发语言·链表
2401_871696522 小时前
CSS如何解决Flex布局在老版本安卓机兼容性_使用autoprefixer工具
jvm·数据库·python
qq_206901392 小时前
c++怎么把多个变量一次性写入二进制文件_结构体对齐与write【实战】
jvm·数据库·python