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

亮点

  • 一个工具即可取代 pippip-toolspipxpoetrypyenvtwinevirtualenv 等。
  • ️ 比 pip 快 10-100 倍。
  • ️ 提供全面的项目管理,并带有通用锁文件。
  • ️ 运行脚本,支持内联依赖元数据。
  • 安装和管理 Python 版本。
  • ️ 运行和安装 作为 Python 包发布的工具。
  • 包含一个 pip 兼容接口,以熟悉的 CLI 提供性能提升。
  • 支持 Cargo 风格的工作区,适用于可扩展项目。
  • 磁盘空间高效,具有用于依赖项去重的全局缓存。
  • ⏬ 无需 Rust 或 Python,即可通过 curlpip 安装。
  • ️ 支持 macOS、Linux 和 Windows。

安装方式:

[macOS 和 Linux]
curl -LsSf https://astral.sh/uv/install.sh | sh

[windows]
powershell -ExecutionPolicy ByPass -c "irm  | iex"

️ 典型应用场景

  1. 日常开发:用 uv pip install 极速安装依赖,替代 pip install
  2. 环境隔离:用 uv venv 一键创建虚拟环境,替代 virtualenv
# 创建虚拟环境
uv venv  #在 `.venv` 创建一个虚拟环境
uv venv my-name  #在 `my-name` 创建一个虚拟环境
uv venv --python 3.11  #使用 Python 3.11 创建一个虚拟环境
#激活虚拟环境
[macOS 和 Linux]
source .venv/bin/activate
[windows]
.venvScriptsactivate

deactivate  # 退出虚拟环境
uv venv --seed  # 强制安装基础包(如pip, setuptools, wheel)
  1. 版本管理:用 uv python install 安装和管理多版本 Python,替代 pyenv
  2. 依赖锁定:自动生成 uv.lock,确保团队依赖一致。 例如,在 Python 项目中,通常会用 requirements.txt(或 pyproject.toml)记录依赖,比如你写了:
requests >= 2.20.0  #版本只要大于等于 2.20.0 就行

这种 “依赖版本不固定,会导致依赖不可重现,项目在不同环境、不同时间运行结果不一致” 的问题:

  • uv.lock:是 uv 生成的纯文本格式锁定文件,会记录下你当前环境中,所有依赖(包括主依赖、间接依赖)的「精确版本号」、下载来源、哈希值等信息,形成一份 “依赖快照”,可以把 “模糊依赖” 变成 “精确依赖”;它确保 “所有人安装的依赖完全一致” :当其他人拿到你的项目后,只要有这份 uv.lock,用 uv 安装依赖时,uv 会严格按照锁定文件中的精确版本、哈希值来安装,不会去下载任何新版本,哪怕官方已经发布了更高版本的 requests验证依赖完整性:锁定文件中的哈希值,可以验证下载的依赖包是否被篡改,避免安装恶意或损坏的包;用 uv 安装依赖后,uv 会自动生成 / 更新 uv.lock,里面不会有 >=<= 这种模糊符号,全是精确版本,比如:
    requests = { version = "2.28.2", source = "pypi", hash = "sha256:..." }
    urllib3 = { version = "1.26.14", source = "pypi", hash = "sha256:..." }
    (`urllib3` 是 `requests` 的间接依赖,没手动写,但它也会被精确记录)

官网:github.com/astral-sh/u…
文档:docs.astral.sh/uv/

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com