使用工具
许多 Python 软件包提供了可用作工具的应用程序。uv 对轻松调用和安装工具提供了专门支持。
运行工具
uvx
命令可在不安装工具的情况下调用它。
例如,要运行 ruff
:
可在工具名称后提供参数:
$ uvx pycowsay hello from uv
-------------
< hello from uv >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
使用 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 拉取:
你还可以从特定命名分支拉取最新提交:
或者拉取特定标签:
甚至特定提交:
带插件的命令
可以包含其他依赖项,例如,在运行 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
即可指定包版本:
同样,对于包源也是如此:
与 uvx
一样,安装时可以包含其他包:
升级工具
要升级工具,请使用 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)\<工具名称>\Scripts
访问这些脚本。
目前仅支持扩展名为 .ps1
、.cmd
和 .bat
的旧版脚本。
例如,以下是运行命令提示符脚本的示例。
此外,你无需指定扩展名。uvx
将自动按顺序查找以 .ps1
、.cmd
和 .bat
结尾的文件并为你执行。
后续步骤
要了解更多关于使用 uv 管理工具的信息,请参阅 工具概念 页面和 命令参考。
或者,继续阅读以了解如何 处理项目。