Python uv 工具介绍

1,005 阅读4分钟

uv 工具介绍

uv 是一款由 Astral 团队开发的高性能 Python 包和项目管理工具,基于 Rust 编写,旨在替代传统的 pip、pip-tools、poetry、virtualenv 等工具。它的设计目标是提供更快的依赖解析和安装速度,同时保持与现有工具的兼容性。

uv 的主要特点

  1. 极速性能:依赖解析速度比 pip 快 10-100 倍,支持并发下载和智能缓存机制。
  2. 一站式管理:整合了包管理、虚拟环境管理、Python 版本控制、依赖锁定、工具安装和包发布等功能。
  3. 跨平台一致性:通过 uv.lock 文件精确锁定依赖版本,确保开发、测试和生产环境的一致性。
  4. 兼容性:支持 pip 的语法和命令,方便用户无缝迁移。

uv 的核心功能

  1. 包管理:支持安装、更新、卸载 Python 包。
  2. 虚拟环境管理:创建和管理项目级虚拟环境,避免依赖冲突。
  3. Python 版本管理:安装和切换不同版本的 Python。
  4. 项目依赖锁定:生成 uv.lock 文件,确保依赖的一致性。
  5. 工具安装:支持安装和运行 Python 工具。

uv 配置nexus3代理

在终端中输入以下命令来配置uv工具使用nexus3代理:

uv config set index-url http://<nexus3_IP>:8082/repository/pypi-tuna/simple
uv config set trusted-host <nexus3_IP>:8082

其中<nexus3_IP>是运行nexus3服务的服务器的IP地址。

测试配置:

使用uv工具安装一个Python包来测试配置是否成功:

uv install soundfile

配置示例

[[tool.uv.index]]
url = "http://username:password@192.168.xxx.xxx:8081/repository/bi-pypi-group/simple"
default= true
trusted-host = ["192.168.xxx.xxx"]

uv add 和 uv pip install区别

uv add 和 uv pip install 是 uv 工具中两个不同的命令,它们在功能和用途上有一些区别。以下是它们的主要区别:

  1. 用途:
    • uv add:
      • 用于将依赖添加到项目的 pyproject.toml 文件中,并自动锁定依赖版本到 uv.lock 文件中。
      • 适用于项目依赖管理,确保项目中所有开发者和环境使用相同的依赖版本。
      • 通常用于开发环境中,管理项目的依赖。
    • uv pip install:
      • 用于安装包,但不会修改 pyproject.toml 或 uv.lock 文件。
      • 适用于临时安装包或工具,这些包可能不会成为项目的一部分。
      • 通常用于运行时环境或者临时需求。
  2. 依赖管理方式
    • uv add:
      • 自动解析依赖并锁定版本到 uv.lock 文件中。
      • 确保项目依赖的一致性,避免版本冲突。
      • 依赖会添加到 pyproject.toml 的 [tool.uv.dependencies] 部分。
    • uv pip install:
      • 不会修改 pyproject.toml 或 uv.lock 文件。
      • 安装的包不会被锁定,可能会随时间变化。
      • 依赖不会被记录在项目的配置中。
  3. 环境隔离
    • uv add:
      • 通常在项目虚拟环境中安装依赖。
      • 确保依赖不会污染全局环境。
    • uv pip install:
      • 默认安装到当前环境(可能是全局环境或虚拟环境)。
      • 如果没有激活虚拟环境,可能会安装到全局环境中。
  4. 项目一致性
    • uv add:
      • 确保所有开发者和部署环境使用相同的依赖版本。
      • 通过 uv.lock 文件实现依赖锁定。
    • uv pip install:
      • 不保证依赖的一致性。
      • 依赖版本可能会随时间变化。
  5. 安装过程
    • uv add:
      • 自动解析依赖并安装到项目虚拟环境中。
      • 会更新 pyproject.toml 和 uv.lock 文件。
      • 可以通过 uv install 重新安装所有项目依赖。
    • uv pip install:
      • 调用 pip 安装包。
      • 不会自动解析或锁定依赖。
      • 需要手动管理依赖。
  6. 命令参数
    • uv add:
      • 支持 --dev 用于添加开发依赖。
      • 支持 --index-url 指定索引URL。
      • 支持 --editable 用于安装可编辑模式的包。
    • uv pip install:
      • 支持 pip 的所有参数,如 --user、--target 等。
      • 更灵活,但需要手动管理依赖。
  7. 适用场景
    • uv add:
      • 适用于项目依赖管理。
      • 适用于需要确保依赖一致性的场景。
    • uv pip install:
      • 适用于临时安装工具或包。
      • 适用于不需要记录在项目配置中的包。

示例:

使用 uv add

uv add requests
  • 将 requests 添加到 pyproject.toml 的 [tool.uv.dependencies] 部分。
  • 自动解析并锁定版本到 uv.lock 文件中。
  • 安装到项目虚拟环境中。

使用 uv pip install

uv pip install --user requests
  • 调用 pip 安装 requests 到用户目录。
  • 不会修改 pyproject.toml 或 uv.lock 文件。
  • 不会记录在项目依赖中。

总结

  • uv add 适合项目依赖管理,确保依赖的一致性和可重复性
  • uv pip install 适合临时安装包或者工具,灵活性更高,但不保证依赖的一致性

uv add 和 uv install 的关系

uv add 用于添加依赖并更新配置文件。uv install 用于安装已定义的依赖,确保一致性。它们是相互配合的,uv add 是 uv install 的前置步骤,用于管理依赖的添加和锁定,而 uv install 则负责安装这些依赖。