uv 工具介绍
uv 是一款由 Astral 团队开发的高性能 Python 包和项目管理工具,基于 Rust 编写,旨在替代传统的 pip、pip-tools、poetry、virtualenv 等工具。它的设计目标是提供更快的依赖解析和安装速度,同时保持与现有工具的兼容性。
uv 的主要特点
- 极速性能:依赖解析速度比 pip 快 10-100 倍,支持并发下载和智能缓存机制。
- 一站式管理:整合了包管理、虚拟环境管理、Python 版本控制、依赖锁定、工具安装和包发布等功能。
- 跨平台一致性:通过 uv.lock 文件精确锁定依赖版本,确保开发、测试和生产环境的一致性。
- 兼容性:支持 pip 的语法和命令,方便用户无缝迁移。
uv 的核心功能
- 包管理:支持安装、更新、卸载 Python 包。
- 虚拟环境管理:创建和管理项目级虚拟环境,避免依赖冲突。
- Python 版本管理:安装和切换不同版本的 Python。
- 项目依赖锁定:生成 uv.lock 文件,确保依赖的一致性。
- 工具安装:支持安装和运行 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 工具中两个不同的命令,它们在功能和用途上有一些区别。以下是它们的主要区别:
- 用途:
- uv add:
- 用于将依赖添加到项目的 pyproject.toml 文件中,并自动锁定依赖版本到 uv.lock 文件中。
- 适用于项目依赖管理,确保项目中所有开发者和环境使用相同的依赖版本。
- 通常用于开发环境中,管理项目的依赖。
- uv pip install:
- 用于安装包,但不会修改 pyproject.toml 或 uv.lock 文件。
- 适用于临时安装包或工具,这些包可能不会成为项目的一部分。
- 通常用于运行时环境或者临时需求。
- uv add:
- 依赖管理方式
- uv add:
- 自动解析依赖并锁定版本到 uv.lock 文件中。
- 确保项目依赖的一致性,避免版本冲突。
- 依赖会添加到 pyproject.toml 的 [tool.uv.dependencies] 部分。
- uv pip install:
- 不会修改 pyproject.toml 或 uv.lock 文件。
- 安装的包不会被锁定,可能会随时间变化。
- 依赖不会被记录在项目的配置中。
- uv add:
- 环境隔离
- uv add:
- 通常在项目虚拟环境中安装依赖。
- 确保依赖不会污染全局环境。
- uv pip install:
- 默认安装到当前环境(可能是全局环境或虚拟环境)。
- 如果没有激活虚拟环境,可能会安装到全局环境中。
- uv add:
- 项目一致性
- uv add:
- 确保所有开发者和部署环境使用相同的依赖版本。
- 通过 uv.lock 文件实现依赖锁定。
- uv pip install:
- 不保证依赖的一致性。
- 依赖版本可能会随时间变化。
- uv add:
- 安装过程
- uv add:
- 自动解析依赖并安装到项目虚拟环境中。
- 会更新 pyproject.toml 和 uv.lock 文件。
- 可以通过 uv install 重新安装所有项目依赖。
- uv pip install:
- 调用 pip 安装包。
- 不会自动解析或锁定依赖。
- 需要手动管理依赖。
- uv add:
- 命令参数
- uv add:
- 支持 --dev 用于添加开发依赖。
- 支持 --index-url 指定索引URL。
- 支持 --editable 用于安装可编辑模式的包。
- uv pip install:
- 支持 pip 的所有参数,如 --user、--target 等。
- 更灵活,但需要手动管理依赖。
- uv add:
- 适用场景
- uv add:
- 适用于项目依赖管理。
- 适用于需要确保依赖一致性的场景。
- uv pip install:
- 适用于临时安装工具或包。
- 适用于不需要记录在项目配置中的包。
- uv add:
示例:
使用 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 则负责安装这些依赖。