uv
docs.astral.sh
What it is
uv is a Python package and project manager for Linux, macOS, and Windows. Written in Rust, it manages dependencies and environments, with lockfiles and workspaces, and can install, list, pin, or uninstall Python versions. It also runs scripts with dependencies and runs or installs command-line tools from Python packages. Its pip-compatible interface is intended to cover work done by tools such as pip, pip-tools, pipx, poetry, pyenv, twine, and virtualenv, though its commands do not exactly match those tools. The documentation describes uv as 10–100x faster than pip. It supports source distributions, wheels, requirements.txt, and pylock.toml, as well as offline installation and private registry authentication. For package selection, its default first-index strategy limits candidates to the first index where a package is found. Credentials are not stored in uv.lock, but uv currently stores them in a plaintext file; native system secret storage is an experimental preview. The free plan is free.
Spec sheet
- What it does
- uv is an extremely fast Python package and project manager written in Rust.Read 29 Sep 2026 · docs.astral.sh
- Purpose
- uv is an extremely fast Python package and project manager written in Rust.Read 30 Sep 2026 · docs.astral.sh
- Intended users
- Astral says it builds high-performance developer tools for the Python ecosystem to help developers ship software faster.Read 29 Sep 2026 · astral.sh
- Free plan
- YesRead 22 Sep 2026 · docs.astral.sh
- Integrations
- The documentation lists integrations and guides for Docker, Jupyter, marimo, GitHub Actions, GitLab CI/CD, Pre-commit, PyTorch, FastAPI, and several package registries.Read 30 Sep 2026 · docs.astral.sh
- Security
- uv uses TLS with rustls and bundled Mozilla root certificates by default to verify HTTPS connections.Read 30 Sep 2026 · docs.astral.sh
- Maker
- Astral says its mission is to make the Python ecosystem more productive by building high-performance developer tools, starting with Ruff.Read 30 Sep 2026 · astral.sh
- Consolidated tooling
- uv is designed to replace tools including pip, pip-tools, pipx, poetry, pyenv, twine, and virtualenv.Read 30 Sep 2026 · docs.astral.sh
- Credential storage
- uv currently stores credentials in a plaintext file; native system secret storage is available as an experimental preview feature.Read 29 Sep 2026 · docs.astral.sh
- Credentials
- Credentials are not stored in uv.lock; uv supports credentials through environment variables, URLs, netrc, and keyring.Read 30 Sep 2026 · docs.astral.sh
- Dependency confusion protection
- By default, uv's first-index strategy limits package candidates to the first index where a package is found, to help prevent dependency confusion attacks.Read 30 Sep 2026 · docs.astral.sh
- Dependency resolution
- YesRead 22 Sep 2026 · docs.astral.sh
- Distribution
- uv can be installed with a standalone installer, PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, or Cargo.Read 29 Sep 2026 · docs.astral.sh
- Install methods
- uv offers standalone installers and is also available through PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo.Read 30 Sep 2026 · docs.astral.sh
- Lockfile support
- YesRead 22 Sep 2026 · docs.astral.sh
- Offline installation
- YesRead 22 Sep 2026 · docs.astral.sh
- Package formats
- source distributions,wheels,requirements.txt,pylock.tomlRead 22 Sep 2026 · docs.astral.sh
- Performance
- The documentation describes uv as 10–100x faster than pip.Read 29 Sep 2026 · docs.astral.sh
- pip compatibility
- uv provides a pip-compatible interface for common pip, pip-tools, and virtualenv commands.Read 30 Sep 2026 · docs.astral.sh
- Platform limits
- The documentation lists macOS, Linux, and Windows support; the PyPI installation note says platforms without a prebuilt wheel require a Rust toolchain to build from source.Read 30 Sep 2026 · docs.astral.sh
- Private registry auth
- YesRead 22 Sep 2026 · docs.astral.sh
- Project management
- uv manages project dependencies and environments and supports lockfiles and workspaces.Read 29 Sep 2026 · docs.astral.sh
- Projects
- uv manages project dependencies and environments and supports lockfiles and workspaces.Read 30 Sep 2026 · docs.astral.sh
- Python versions
- uv installs and manages Python versions, including switching between versions.Read 30 Sep 2026 · docs.astral.sh
- Scripts and tools
- uv manages dependencies for single-file scripts and runs or installs command-line tools published as Python packages.Read 30 Sep 2026 · docs.astral.sh
- Speed
- The documentation describes uv as 10–100x faster than pip.Read 30 Sep 2026 · docs.astral.sh
- Supported platforms
- macOS,Linux,Windows,CPython,PyPy,Pyodide,GraalPyRead 22 Sep 2026 · docs.astral.sh
- Tool replacement
- uv can replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and other tools.Read 29 Sep 2026 · docs.astral.sh
- Workspace support
- YesRead 22 Sep 2026 · docs.astral.sh
Plans and prices
Strong points and limits
Strong points
- Manages dependencies, environments, lockfiles, and workspaces
- Installs and manages Python versions
- Supports offline installation and private registries
- Free plan: free
Limits
- Credentials currently use a plaintext file
- Native system secret storage is experimental
- Some platforms require Rust to build from source
Who it suits
uv suits Python developers who want one tool for package and project management, Python versions, scripts, and command-line tools. Its lockfile, workspace, offline installation, and private registry support may also suit teams managing projects across supported platforms.
uv in depth
Read the full write-up
Overview
uv is Astral’s Rust-based package and project manager for Python, best suited to developers who want to consolidate dependency, environment, Python-version, script, and command-line-tool workflows. Its scope is unusually broad for a free tool, but its imperfect compatibility with familiar commands and plaintext credential storage are meaningful trade-offs.
Rather than assembling several separate tools, a developer can use uv for tasks often handled by pip, pip-tools, pipx, Poetry, pyenv, twine, and virtualenv. The documentation describes it as 10–100x faster than pip; that is a stated comparison, not a promise for every workload. Its pip-compatible interface also does not exactly reproduce the commands and behavior of the tools it draws on, so established workflows may need adjustment.
Compare it with our Python Package Managers and broader Package Managers directories.
Key features
Projects and dependencies
uv resolves dependencies and manages project environments, lockfiles, and workspaces. It handles source distributions and wheels, as well as requirements.txt and pylock.toml. Private registry authentication and offline installation support make it a practical option for internal package sources or environments where network access is restricted.
Its default first-index strategy limits package candidates to the first index where a package is found, helping reduce dependency-confusion risk. Credentials are excluded from uv.lock, and authentication can use environment variables, URLs, netrc, or keyring. The security caveat is storage: uv currently keeps credentials in a plaintext file. Native system secret storage exists only as an experimental preview, so teams with strict credential-handling requirements should weigh that limitation before adopting it.
Python versions, scripts, and tools
uv can install, list, pin, and uninstall Python versions, and it supports CPython, PyPy, Pyodide, and GraalPy. It can also run scripts with dependencies and run or install command-line tools distributed as Python packages. That breadth can reduce the number of separate utilities a Python developer needs, though teams should account for the differences in uv’s interfaces when replacing existing commands.
Integrations and installation
Official integration guides cover Docker, Jupyter, GitHub Actions, GitLab CI/CD, Pre-commit, PyTorch, FastAPI, Bazel, and package registries. uv uses rustls with aws-lc-rs for TLS and bundled Mozilla root certificates by default. Installation options include a standalone installer, PyPI, Homebrew, MacPorts, WinGet, Scoop, Docker, GitHub Releases, and Cargo. PyPI installation on platforms without a prebuilt wheel requires a Rust toolchain to build from source.
Pricing
uv is free: the uv plan costs nothing. It is an open-source Python package and project manager, with no paid tier or trial needed to get started. That makes it suitable for individual developers and teams seeking broad tooling without a software subscription.
Platforms
uv supports Linux, macOS, and Windows. Its Python compatibility spans CPython, PyPy, Pyodide, and GraalPy. The PyPI route may require a Rust toolchain on platforms without a prebuilt wheel; the standalone installer and other distribution channels provide alternatives.
Who it's for
uv is a strong fit for Python developers who want dependency resolution, lockfiles, workspaces, environment management, Python-version control, and script or CLI execution in one tool. Offline installation and private registry authentication also suit teams working with internal packages or constrained networks. It is less compelling for organizations that require mature native secret storage or exact behavioral compatibility with their current package-management commands.
Pros and cons
Pros
Broad Python workflow coverage: It can replace several common package, environment, version, and command-line tools, reducing tool sprawl.
Project controls: Dependency resolution, lockfiles, workspaces, and offline installation support reproducible work across projects and restricted environments.
Multiple Python implementations: Support for CPython, PyPy, Pyodide, and GraalPy gives it reach beyond a single interpreter.
Free and widely installable: The free plan and multiple distribution channels lower the cost and setup barriers.
Cons
Credentials currently use plaintext storage: Native secret storage is only an experimental preview, a concern for security-sensitive teams.
Compatibility is not exact: The pip-compatible interface differs in commands and behavior, which can complicate migration from familiar tools.
Some PyPI installs need a Rust toolchain: Building from source adds setup work on platforms without a prebuilt wheel.
Alternatives
Choose pip if you want Python package installation through a free, focused tool rather than uv’s broader project and environment scope. For JavaScript package management, npm offers a free plan for public package authors with unlimited public packages and public registry access; its paid plans are a separate consideration.
Gradle is a free open-source build system, while Cargo is a free Rust package manager and build tool. Yarn is a free open-source package manager with no paid plans or usage limits stated, and pnpm is another free package manager for Linux, macOS, Windows, and Android.
Conan is a free and open-source option for C and C++ package management, dependency, and binary management. For PHP dependency management, consider Composer, a free tool under the MIT license.
Verdict
Choose uv if you work in Python and want one free tool to cover dependency and environment management, Python versions, scripts, and command-line tools, with lockfiles and offline support. Its consolidation and breadth are the strongest reasons to adopt it. Look elsewhere if your team needs native secret storage beyond an experimental preview or relies on exact compatibility with existing package-management commands.
Verdict
uv brings several Python packaging and project tasks into one tool, with support for lockfiles, workspaces, and offline installation. Its plaintext credential storage is worth considering, and native secret storage remains experimental.
Where Specifiction places it
- Package Managers#4 of 938.9
- Python Package Managers#10 of 278.0