uv tool

A “tool” is a Python script or executable that’s stored in its own virtual environments (docs)

The next tips will use the linter ruff as an example tool.

”On the fly” tool

uv tool run ruff

This will create a new virtual environment, install ruff and its dependencies and execute the command ruff. The first execution will require downloading ruff and its dependencies. Even though a virtual env needs to be created on each execution, subsequent ones are much faster because they leverage the uv cache.

The command uvx is an alias to uv tool run. Therefore, this command is identical to the previous one.

uvx ruff

Installed tool

uv tool install ruff

This will installed ruff on the PATH. ruff can be accessed outside of uv and used in scripting for example.

ruff

If using uv tool run ruff or uvx ruff, will used the installed tool. Use --isolated to force an isolated instance (docs)

Creating Python tools