一个用 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 版本管理及脚本运行等功能 更快的性能,跨平台支持,自动化的依赖管理,通用锁定文件 新工具,生态尚不成熟,可能会有不稳定性 适合需要高效管理、项目复杂度较高的开发者
相关推荐
用户4019925568614 分钟前
基于对话树回溯的社媒评论流买方意图识别与噪音过滤实践
python
用户03321266636723 分钟前
使用 Python 加密或解密 PDF 文档
python
小七-七牛开发者39 分钟前
让 Go 走得更远:用 LLGo 打通 Go 与 C/C++/Python 生态
python·编程·编译器·llvm·llgo
CyrusYiVPP2 小时前
实测 Ollama 本地部署:我用 Python 搓了个离线问答机器人,Qwen4 27B 一到换个模型名就能用
人工智能·python
RobinDevNotes2 小时前
从 Electron 到 GPUI,9 个跨平台桌面方案该怎么选
前端·javascript·rust·electron·openresty·前端开发工具
2601_967980112 小时前
Python中flatten( )函数及函数用法详解
python·numpy·数组操作·flatten函数·列表处理
xbzb2 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
时间的拾荒人5 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
敲上瘾5 小时前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3