网页正在组装中... ⚙️ (・ω・)ノ
导航

分享计算机图书阅读心得,交流编程知识与日常生活的技术博客

侧边栏
热门文章
暂无内容
阅读中
ES6标准入门
10分
JavascriptES6标准入门
2025年4月01日 0时 ~ 阅读中
已累计阅读2个月6天
Javascript ES6学习极其推荐的书籍!列出了ES6的很多特性和变化,以及一些ES7的提案
加密与解密
10分
逆向加密与解密
2025年4月07日 0时 ~ 阅读中
已累计阅读2个月
逆向必读书目,十分推荐!!!
攻略中
异星工场
超爱
9分???
PC-超喜欢游戏异星工场
2024年2月07日 0时 ~ 攻略中
已累计游玩1年4个月
就算不打折也超级值的工场经营游戏,就是价格有点感人(DLC-130 本体-130)o( ̄┰ ̄*)ゞ
最新评论
暂无内容

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 和 LinuxWindows
curl -LsSf https://astral.sh/uv/install.sh | shpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

PyPI

如果从 PyPI 安装,建议将 uv 安装到隔离环境中,例如使用 pipx:

pipx install uvpip install uv

其他方式

CargoHomebrewWinGetScoop
cargo install --git https://github.com/astral-sh/uv uvbrew install uvwinget install --id=astral-sh.uv  -escoop 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 文件的最后修改时间进行缓存。