How to install uv on Windows
uv is a fast Python package and project manager. This guide covers how to install it on Windows.
Note
On a Snapdragon or other Arm64 machine, the installer downloads the native aarch64 uv on its own, but uv python install still defaults to an emulated x86_64 interpreter. Read how to use uv on Windows ARM64 before you install Python.
Install with the standalone installer (recommended)
The standalone installer is the recommended method because it requires no prerequisites: no Python, no package manager, nothing. It downloads a prebuilt binary and adds it to your PATH.
Warning
Don’t run this installer for a WSL environment. WSL is a Linux system with its own filesystem and PATH, so uv installed on the Windows side never shows up in your WSL shell. Run curl -LsSf https://astral.sh/uv/install.sh | sh inside the WSL shell instead, as described in how to install uv on Linux.
Open PowerShell and run:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"The -ExecutionPolicy ByPass flag allows running the installation script from the internet.
After running the installer, open a new PowerShell window so the updated PATH takes effect.
Tip
For CI runners and scripted setups, put the version in the URL so every machine gets the same uv: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.12.1/install.ps1 | iex". Set $env:UV_INSTALL_DIR to choose the install directory. Set $env:UV_NO_MODIFY_PATH=1 to leave the user PATH untouched, which means the runner has to put the install directory on PATH itself before uv resolves.
Install uv from a package manager
The standalone installer works for most people, but you may prefer a different method depending on your setup.
Install with WinGet
If you use WinGet (included with modern versions of Windows):
winget install --id=astral-sh.uv -eInstall with Scoop
If you use Scoop:
scoop install main/uvInstall with pip or pipx
If you have Python installed and prefer to manage tools through pip:
pip install uvOr, to install it in an isolated environment with pipx:
pipx install uvThis approach creates a circular dependency (you need Python to install the tool that manages Python), so the standalone installer is usually a better choice. It also gives up uv self update; see how to upgrade uv for the command each install method needs.
Add PowerShell tab completion
uv can generate tab-completion scripts for PowerShell. This gives you autocomplete for commands, options, and arguments.
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
Add-Content -Path $PROFILE -Value '(& uv generate-shell-completion powershell) | Out-String | Invoke-Expression'Restart PowerShell after running this command.
Confirm uv is on your PATH
After installation, open a new PowerShell window and verify uv is working:
uv --versionYou should see a line like this:
uv 0.12.1 (329541a50 2026-07-31 x86_64-pc-windows-msvc)
The parentheses hold the build commit, the build date, and the target triple. x86_64-pc-windows-msvc is the Intel and AMD build; aarch64-pc-windows-msvc is the native Arm build.
If PowerShell can’t find the command, see uv not recognized after installing.
Build your first project
With uv working, the next step is a project. Getting started with uv tours uv init, uv add, and uv run end to end.
Fix a failed install
uv not recognized after installing
The standalone installer adds uv to %USERPROFILE%\.local\bin. If that directory isn’t on your PATH, the command won’t be found.
Fix: Close every terminal window and open a new one. The installer updates your user PATH environment variable, but running sessions don’t pick up the change, and a new Windows Terminal tab can inherit the old PATH from the window that spawned it. To unblock the session you already have open, append the install directory to it:
$env:Path += ";$env:USERPROFILE\.local\bin"That lasts until you close the window, and it leaves the rest of the session’s PATH in place.
If a fresh window still doesn’t work, check your PATH manually:
$env:PATH -split ';' | Select-String '.local\\bin'If nothing prints, add it through System Settings > Environment Variables, or run:
[Environment]::SetEnvironmentVariable("Path", "$env:USERPROFILE\.local\bin;$([Environment]::GetEnvironmentVariable('Path', 'User'))", "User")Then open a new PowerShell window.
Get past execution policy errors
If PowerShell blocks the install script with an error about execution policies, the -ExecutionPolicy ByPass flag in the install command should handle this. If you’re still blocked, your organization may have enforced a stricter policy via Group Policy. In that case, use WinGet or Scoop instead.
Restore a binary your antivirus quarantined
Some antivirus software flags the uv binary or the install script as suspicious. If the installation fails or uv stops working after install, check whether your antivirus quarantined the binary. You may need to add an exception for %USERPROFILE%\.local\bin\uv.exe.
Learn More
- uv: A Complete Guide covers what uv does, how fast it is, the core workflows, and recent releases.
- How to use uv on Windows ARM64 covers the native aarch64 build and when to switch off the default emulated x86_64 Python
- uv reference page
- uv official installation guide
- Create your first Python project
- How to upgrade uv