Python新包管理工具:uv快速上手
作者:云书0v0时间:2025-05-01 19:13:47分类:Python小技巧
简介
uv是一款可以替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv
等包管理器。
且uv由Rust编写,其运行速度比pip
快10-100倍。
安装
独立安装
macOS 和 Linux | Windows |
---|---|
curl -LsSf https://astral.sh/uv/install.sh | sh | powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" |
PyPI
如果从 PyPI 安装,建议将 uv 安装到隔离环境中,例如使用 pipx:
pipx install uv | pip install uv |
其他方式
Cargo | Homebrew | WinGet | Scoop |
---|---|---|---|
cargo install --git https://github.com/astral-sh/uv uv | brew install uv | winget install --id=astral-sh.uv -e | scoop install main/uv |
卸载
如果您需要从系统中删除 uv,请按照以下步骤操作:
- 清理存储数据(可选):
uv cache clean
rm -r "$(uv python dir)"
rm -r "$(uv tool dir)"
- 删除 uv 和 uvx 二进制文件:
- macOS 和 LinuxWindows
rm ~/.local/bin/uv ~/.local/bin/uvx
- Windows
rm ~/.local/bin/uv ~/.local/bin/uvx
检测
安装 uv 后,您可以通过运行以下 uv 命令来检查 uv 是否可用。 命令:
uv
您应该会看到一个列出可用命令的帮助菜单。
功能
Python版本管理
安装和管理 Python 本身。
- uv python install:安装 Python 版本。
- uv python list:查看可用的 Python 版本。
- uv python find:查找已安装的 Python 版本。
- uv python pin:将当前项目固定到使用特定 Python 版本。
- uv python uninstall:卸载 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 以包含工具可执行文件。
pip 接口
手动管理环境和包 — 旨在用于遗留工作流程或高级命令无法提供足够控制的情况。
创建虚拟环境(替代 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: 使用锁文件同步环境。
获取帮助
可以使用 --help
标志来查看命令的帮助菜单,例如,对于 uv:
uv --help
要查看特定命令的帮助菜单,例如,对于 uv init:
uv init --help
使用 --help
标志时,uv 会显示一个简化的帮助菜单。要查看命令的更长的帮助菜单,请使用 uv help
:
uv help
查看特定命令的长帮助菜单,例如,对于 uv init:
uv help init
使用长帮助菜单时,uv 将尝试使用 less 或 more 来“分页”输出,以便一次不全部显示。要退出分页器,请按 q
。
查看版本
在寻求帮助时,确定您正在使用的 uv 版本很重要——有时问题已经在更新的版本中得到了解决。
检查已安装版本:
uv version
缓存
uv 使用积极的缓存策略,以避免重新下载(和重新构建)在之前的运行中已经访问过的依赖项。
uv 的缓存语义的具体细节取决于依赖项的性质:
- 对于注册表依赖项 (如从 PyPI 下载的),uv 遵守 HTTP 缓存头。
- 对于直接 URL 依赖项,uv 尊重 HTTP 缓存头,同时也根据 URL 本身进行缓存。
- 对于 Git 依赖项,uv 根据完全解析的 Git 提交哈希进行缓存。因此, uv pip compile 将在写入解析后的依赖集时将 Git 依赖项固定到特定的提交哈希。
- 对于本地依赖项,uv 根据源存档的最后修改时间进行缓存(即本地的 .whl 或 .tar.gz 文件)。对于目录,uv 根据 pyproject.toml、setup.py 或 setup.cfg 文件的最后修改时间进行缓存。