一、新一代包管理工具uv
Python
包管理生态中存在多种工具,如 pip
、pip-tools
、poetry
、conda
等,各自具备一定功能。
而今天介绍的uv
是 Astral
公司推出的一款基于 Rust
编写的 Python
包管理工具,旨在成为 “Python 的 Cargo”。
Cargo
是 Rust 编程语言的包管理和构建工具。它用于简化 Rust 项目的依赖管理、构建过程、测试和发布。
它提供了快速、可靠且易用的包管理体验,在性能、兼容性和功能上都有出色表现,为 Python
项目的开发和管理带来了新的选择。
✨与其他Python
中的包管理工具相比,uv
更像是一个全能选手,它的优势在于:
速度快:得益于
Rust
,uv
工具的速度让人惊艳,比如安装依赖,速度比其他工具快很多功能全面:
uv
是“一站式服务”的工具,从安装 Python、管理虚拟环境,到安装和管理包,再到管理项目依赖,它统统都能处理得很好前景光明:背后有风投公司
Astral
支持,且采用了MIT
许可,即使未来出现问题,社区也有应对的办法
使用uv
,也可以像NodeJS
或者Rust
项目那样方便的管理依赖。
二、一键安装
Github: https://github.com/astral-sh/uv
官方提供的一键安装脚本:
# 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
安装之后,可以通过uv help
命令检查是否安装成功
三、快速上手
介绍uv
工具主要使用的两个文件:
pyproject.toml
:定义项目的主要依赖,包括项目名称、版本、描述、支持的Python
版本等信息uv.lock
:记录项目的所有依赖,包括依赖的依赖,且跨平台,确保在不同环境下安装的一致性。这个文件由uv
自动管理,不要手动编辑
使用uv
创建项目
# 初始化一个名为 example 的新项目
$ uv init example
Initialized project `example` at `/home/user/example`
$ cd example
# 安装 ruff 包,它是一个 Python 代码检查工具。
$ 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
# 运行 ruff 检查项目代码,确保没有错误。
$ 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
四、使用方法
1. 常用指令
- 查看pip包内容:
uv pip list
- 全局安装第三方包
uv pip install --system requests
- 查看可以更新的包
uv pip list --outdated
uv
更新
uv self update
- 查看已安装的python版本
uv python list
- 安装/卸载python
# 安装python 3.12
uv python install 3.12
# 卸载python 3.10
uv python uninstall 3.10
- 初始化项目
uv init project_name
- 为项目添加依赖
uv add xxxx
2. 详细介绍
安装和管理 Python 本身。
uv python install
:安装 Python 版本。uv python list
:查看可用的 Python 版本。uv python find
:查找已安装的 Python 版本。uv python pin
:固定当前项目以使用特定的 Python 版本。uv python uninstall
:卸载某个 Python 版本。
请参阅安装 Python 的指南来开始。
执行独立的 Python 脚本,例如example.py
。
uv run
:运行脚本。uv add --script
:向脚本添加依赖项uv remove --script
:从脚本中删除依赖项
请参阅运行脚本的指南来开始。
创建和处理 Python 项目,即使用pyproject.toml
.
uv init
:创建一个新的 Python 项目。uv add
:向项目添加依赖项。uv remove
:从项目中删除依赖项。uv sync
:将项目的依赖项与环境同步。uv lock
:为项目的依赖项创建一个锁文件。uv run
:在项目环境中运行命令。uv tree
:查看项目的依赖关系树。uv build
:将项目构建到分发档案中。uv publish
:将项目发布到包索引。
请参阅项目指南以开始操作。
运行和安装发布到 Python 包索引的工具,例如ruff
或black
。
uvx
/uv tool run
:在临时环境中运行工具。uv tool install
:安装用户范围内的工具。uv tool uninstall
:卸载工具。uv tool list
:列出已安装的工具。uv tool update-shell
:更新 shell 以包含工具可执行文件。
请参阅工具指南以开始使用。
手动管理环境和包 - 旨在用于传统工作流程或高级命令无法提供足够控制的情况。
创建虚拟环境(替换venv
和virtualenv
):
uv venv
:创建一个新的虚拟环境。
有关详细信息,请参阅有关使用环境的文档。
管理环境中的包(替换pip
和 pipdeptree
):
uv pip install
:将包安装到当前环境中。uv pip show
:显示有关已安装软件包的详细信息。uv pip freeze
:列出已安装的软件包及其版本。uv pip check
:检查当前环境是否有兼容的包。uv pip list
:列出已安装的软件包。uv pip uninstall
:卸载软件包。uv pip tree
:查看环境的依赖关系树。
有关详细信息,请参阅管理包的文档。
锁定环境中的包(替换pip-tools
):
uv pip compile
:将需求编译成锁文件。uv pip sync
:使用锁文件同步环境。
有关详细信息,请参阅锁定环境的文档。
重要的
这些命令并未完全实现其所基于工具的接口和行为。您越偏离常用工作流程,就越有可能遇到差异。有关详细信息,请参阅pip 兼容性指南。
管理和检查 uv 的状态,例如缓存、存储目录或执行自我更新:
uv cache clean
:删除缓存条目。uv cache prune
:删除过时的缓存条目。uv cache dir
:显示uv缓存目录路径。uv tool dir
:显示uv工具目录路径。uv python dir
:显示uv安装的Python版本路径。uv self update
:更新uv到最新版本。
阅读指南了解每个功能的介绍,查看 概念页面了解有关 uv 功能的详细信息,或者了解 在遇到任何问题时如何获得帮助