Skip to content

How to upgrade uv

Tip

Try my command line tool uvx uvhow for a quick view into your uv install and how to upgrade it. Learn more.

Upgrade uv to the latest version using your original installation method.

To upgrade uv, run uv self update if you installed it with the standalone installer, the most common method. If you installed uv through a package manager, use that manager’s upgrade command instead. Run uvx uvhow when you aren’t sure which one applies.

Install method Upgrade command
Standalone installer uv self update
Homebrew brew upgrade uv
pipx pipx upgrade uv
pip pip install --upgrade uv
WinGet winget upgrade astral-sh.uv
Scoop scoop update uv
Cargo cargo install --locked uv

Package-manager builds can trail the standalone release, so uv --version after a package-manager upgrade may still report an older uv than the newest release. If you need releases the day they ship, uninstall the package-manager copy first (brew uninstall uv, for example) and then run the standalone installer. Keeping both leaves two binaries on your PATH and the upgrade commands stop matching the uv you actually run.

Upgrade a standalone install

If you installed uv using the standalone installer (curl/powershell), run:

uv self update

Read the error when uv self update refuses

uv self update prints one of two errors, and which one you get identifies how uv was installed.

A package manager that compiles uv from source, such as Homebrew, produces a binary with the self-update code left out:

error: uv was installed through an external package manager and cannot update itself.

hint: You installed uv using Homebrew. To update uv, run `brew update && brew upgrade uv`

uv names the manager when it can recognize one from the path the binary sits in. When it can’t, the second line falls back to hint: Please use your package manager to update uv.

A uv installed with pip or pipx keeps the self-update code but refuses to run it:

error: Self-update is only available for uv binaries installed via the standalone installation scripts.

When that second error continues with The current executable is at ... but the standalone installer was used to install uv to ... Are multiple copies of uv installed?, a standalone install and a package-manager install are both present and the wrong one comes first on your PATH. Run which -a uv (Get-Command -All uv in PowerShell) to list every copy, then remove the one you don’t want or call the one you do want by its full path.

Upgrade a pipx install

If you installed uv via pipx, upgrade using:

pipx upgrade uv

Upgrade a pip install

If you installed uv with pip, upgrade using:

pip install --upgrade uv

If you installed uv into your user site directory with pip install --user uv, upgrade it the same way:

pip install --upgrade --user uv

Run that outside a virtual environment. pip rejects --user inside one with Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

Upgrade a Homebrew install

If you installed uv via Homebrew, upgrade using:

brew upgrade uv

To upgrade all Homebrew packages:

brew upgrade

Upgrade a Cargo install

If you installed uv via Cargo, reinstall from crates.io to upgrade:

cargo install --locked uv

Cargo replaces the existing binary when the published version is newer. This method builds uv from source, so it needs a compatible Rust toolchain and takes several minutes.

Upgrade a WinGet install

If you installed uv via WinGet, upgrade using:

winget upgrade astral-sh.uv

To upgrade all WinGet packages:

winget upgrade --all

Upgrade a Scoop install

If you installed uv via Scoop, upgrade using:

scoop update uv

To update all Scoop packages:

scoop update *

Confirm the new binary replaced the old one

After upgrading, check the version:

uv --version

The version line carries the build commit, the build date, and the target triple:

uv 0.12.0 (b88d7c5c4 2026-07-28 aarch64-apple-darwin)

Package-manager builds put their own label where the commit hash would go. A Homebrew bottle prints Homebrew in that slot, which identifies the install method on its own.

If the version didn’t change, the upgrade command doesn’t match how uv was installed, or a second copy of uv comes first on your PATH. which -a uv (Get-Command -All uv in PowerShell) lists every copy.

Keep your managed Python interpreters current too

Upgrading uv doesn’t touch the Python versions it manages. To pull the latest patch releases for those, see how to keep Python up to date with uv python upgrade.

Learn More

Last updated on