uv 是一个使用 Rust 编写的极速 Python 软件包和项目管理器,pip 的替代工具。uv 可以管理项目依赖关系和环境,支持锁定文件、工作空间等,类似于
rye或poetry。
介绍
- 替代 pip、pip-tools、pipx、poes、pyenv、twine、virtualenv 等的单一工具
- 比 pip 快 10-100 倍
- ️ 提供全面的项目管理,具有通用锁文件
- 运行脚本,支持内联依赖元数据
- 安装和管理 Python 版本
- 运行和安装以 Python 包形式发布的工具
- 包含一个与 pip 兼容的界面,通过熟悉的 CLI 提高性能
- 支持 Cargo 风格的工作区,可扩展项目
- 磁盘空间效率高,全局缓存可实现重复数据依赖
- 无需 Rust 或 Python,即可通过 curl 或 pip 安装
- 支持 macOS、Linux 和 Windows
安装
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# With pip.
pip install uv
# Or pipx.
pipx install uv
# 自更新
uv self update使用
# 初始化项目
$ uv init example
$ cd example
$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
+ example==0.1.0 (from file:///home/user/example)
+ ruff==0.5.0
$ uv run ruff check
All checks passed!
$ uv lock
Resolved 2 packages in 0.33ms
$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms- 配置全局源
# 指定默认镜像源为清华源
$ uv add pandas --default-index https://pypi.tuna.tsinghua.edu.cn/simple
# 添加镜像源清华源
$ uv add pandas --index https://pypi.tuna.tsinghua.edu.cn/simple
# 为pip指定默认源为南京大学源
$ uv pip install torch torchvision torchaudio --default-index https://mirror.nju.edu.cn/pytorch/whl/cu126pyproject.toml
[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = truehelp
uv --help
uv pip --help
uv pip install --helppython 版本管理
$ uv python install 3.10 3.11 3.12
# 创建 env,不加环境路径的话默认是保存在当前的 .venv 目录下
uv venv
# 指定环境保存目录
uv venv /path/to/venv
# 指定Python版本,注意需要对应版本的Python已经安装,--python 同 -p
$ uv venv --python 3.12
$ uv venv --python 3.12.0
$ uv run --python pypy@3.8 -- python --version
# 使用当前目录中的特定 Python 版本
$ uv python pin 3.11
# 使用
source venv/bin/activatepip 子命令
功能类似于 pip,如 uv pip install -r ...
# 从 pypi上安装包,默认安装最新版本
uv pip install flask
# 从镜像网站上安装包
uv pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
# 更新包版本
uv pip install -U flask
# 安装特定版本的包:
uv pip install -U flask==3.0.0
# 从当前目录安装
uv pip install .
# 从当前目录安装,并且支持editable实时更新代码模式
uv pip install -e .
# 卸载
uv pip uninstall flask说明:
- uv 默认不支持读
pip.conf配置,在国内的话,包的默认下载速度是比较慢的,需要手动加--index-url/-i和--extra-index-url
查看包依赖
uv pip compile my_packages.txt
# 生成指定版本的依赖
uv pip compile --no-annotate my_packages.txt -o requirements.txt
# 查找某个包的依赖
echo tensorflow | uv pip compile --no-annotate -
# 将 requirements.txt 中的版本信息更新到当前虚拟环境
uv pip sync requirements.txt缓存
- 默认缓存目录
- Linux:
$HOME/.cache/uv - macOS:
/Users/<user>/Library/Caches/uv - Windows:
C:/Users/<user>/AppData/Local/uv/cache
- Linux:
- 清理缓存:
uv cache prune
环境变量
# 缓存目录
export UV_CACHE_DIR=/path/to/cache/dir
# 镜像地址
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
# 额外镜像地址
export EXTRA_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
# 不使用缓存
export UV_NO_CACHE=0
# 下载包时的超时时间,单位为秒
UV_HTTP_TIMEOUT=30打包
uv build