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 updateRead 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 uvUpgrade a pip install
If you installed uv with pip, upgrade using:
pip install --upgrade uvIf you installed uv into your user site directory with pip install --user uv, upgrade it the same way:
pip install --upgrade --user uvRun 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 uvTo upgrade all Homebrew packages:
brew upgradeUpgrade a Cargo install
If you installed uv via Cargo, reinstall from crates.io to upgrade:
cargo install --locked uvCargo 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.uvTo upgrade all WinGet packages:
winget upgrade --allUpgrade a Scoop install
If you installed uv via Scoop, upgrade using:
scoop update uvTo update all Scoop packages:
scoop update *Confirm the new binary replaced the old one
After upgrading, check the version:
uv --versionThe 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
- uv: A Complete Guide covers what uv does, how fast it is, the core workflows, and recent releases.
- How to install Python with uv
- uv reference documentation