2.3 使用工具
4 分钟阅读
2.3 使用工具
许多 Python 包提供了可作为工具使用的应用。uv 对便捷地调用和安装工具提供了专门支持。
运行工具
uvx 命令可以在不安装工具的情况下调用它。
例如,运行 ruff:
| |
注意
这完全等价于:
1$ uv tool run ruff
uvx只是为方便而提供的别名。
参数可以放在工具名之后:
| |
使用 uvx 时,工具会被安装到临时的隔离环境中。
注意
如果你在项目中运行工具,而该工具需要先安装你的项目(例如使用
pytest或mypy时),你应当使用uv run而不是uvx。否则工具会在与你的项目隔离的虚拟环境中运行。如果你的项目是扁平结构,例如模块没有放在
src目录中,那么项目本身无需安装,使用uvx即可。在这种情况下,只有当你希望在项目依赖中固定该工具版本时,使用uv run才有额外好处。
包名与命令名不同的情况
调用 uvx ruff 时,uv 会安装提供 ruff 命令的 ruff 包。但有时包名与命令名并不相同。
--from 选项可用于从指定包调用命令,例如由 httpie 提供的 http:
| |
请求指定版本
要以特定版本运行工具,请使用 command@<version>:
| |
要以最新版本运行工具,请使用 command@latest:
| |
如上所述,--from 选项也可以用来指定包版本:
| |
或者约束到一个版本范围:
| |
注意 @ 语法只能用于精确版本。
请求附加组件
--from 选项可以用来运行带附加组件的工具:
| |
它也可以与版本选择组合使用:
| |
请求不同来源
--from 选项也可以用来从替代来源安装。
例如,从 git 拉取:
| |
你也可以从指定的命名分支拉取最新提交:
| |
或者拉取特定标签:
| |
甚至可以拉取特定提交:
| |
或者使用 Git LFS 支持:
| |
带插件的命令
可以包含额外的依赖,例如在运行 mkdocs 时包含 mkdocs-material:
| |
安装工具
如果某个工具经常使用,把它安装到持久环境并加入 PATH 会比反复调用 uvx 更方便。
提示
uvx是uv tool run的便捷别名。其他所有与工具交互的命令都需要完整的uv tool前缀。
安装 ruff:
| |
工具安装后,其可执行文件会被放入 PATH 中的 bin 目录,因此无需 uv 也能运行该工具。如果它不在 PATH 中,会显示警告,此时可以用 uv tool update-shell 把它加入 PATH。
安装 ruff 之后,它应该可以直接使用:
| |
与 uv pip install 不同,安装工具不会让它的模块在当前环境中可用。例如,下面的命令会失败:
| |
这种隔离对于减少工具、脚本和项目之间依赖的相互影响与冲突很重要。
与 uvx 不同,uv tool install 作用于包,会安装该工具提供的所有可执行文件。
例如,下面的命令会安装 http、https 和 httpie 可执行文件:
| |
此外,无需 --from 也可以包含包版本:
| |
同样,也可以指定包来源:
| |
或者带 Git LFS 的包来源:
| |
与 uvx 一样,安装时也可以包含额外的包:
| |
使用 --with-executables-from 标志,可以把多个相关的可执行文件安装到同一个工具环境中。例如,下面的命令会安装 ansible 的可执行文件,以及 ansible-core 和 ansible-lint 提供的可执行文件:
| |
升级工具
要升级工具,请使用 uv tool upgrade:
| |
工具升级会遵循安装时提供的版本约束。例如,uv tool install ruff >=0.3,<0.4 之后再执行 uv tool upgrade ruff,会把 Ruff 升级到 >=0.3,<0.4 范围内的最新版本。
如果要替换版本约束,请用 uv tool install 重新安装该工具:
| |
如果要升级所有工具:
| |
请求 Python 版本
默认情况下,uv 在运行、安装或升级工具时会使用你的默认 Python 解释器(找到的第一个)。你可以用 --python 选项指定要使用的 Python 解释器。
例如,在运行工具时请求特定的 Python 版本:
| |
或者在安装工具时:
| |
或者在升级工具时:
| |
关于请求 Python 版本的更多细节,请参阅 Python 版本概念页面。
旧式 Windows 脚本
工具也支持运行旧式 setuptools 脚本。安装后,这些脚本可通过 $(uv tool dir)\<tool-name>\Scripts 访问。
目前只支持扩展名为 .ps1、.cmd 和 .bat 的旧式脚本。
例如,下面是运行命令提示符脚本的示例。
| |
此外,你无需指定扩展名。uvx 会自动按 .ps1、.cmd、.bat 的顺序为你查找相应文件。
| |
后续步骤
要进一步了解用 uv 管理工具,请参阅工具概念页面和命令参考。
或者继续阅读,了解如何处理项目。