An extremely fast Python package and project manager, written in Rust. Designed as a single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv workflows, and more.
uv is an extremely fast Python package and project manager written in Rust. Designed as a comprehensive tool, uv streamlines development workflows by replacing multiple utilities such as pip, poetry, and virtualenv with a single solution.
Key features of uv include its ability to manage dependencies and environments efficiently, support for lockfiles and workspaces akin to rye or poetry, and the capacity to run scripts with inline dependency metadata. Additionally, uv excels in Python version management, offering seamless switching between versions and supporting cross-platform development across macOS, Linux, and Windows.
Ideal for Python developers and DevOps professionals, uv provides a faster alternative to traditional tools, reducing overhead and enhancing productivity through optimized workflows and performance improvements.
README
uv
An extremely fast Python package and project manager, written in Rust.
uv installs Python and allows quickly switching between versions.
Install multiple Python versions:
$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
+ cpython-3.10.14-macos-aarch64-none
+ cpython-3.11.9-macos-aarch64-none
+ cpython-3.12.4-macos-aarch64-none
Download Python versions as needed:
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>
Use a specific Python version in the current directory:
$ uv python pin 3.11
Pinned `.python-version` to `3.11`
uv provides a drop-in replacement for common pip, pip-tools, and virtualenv commands.
uv extends their interfaces with advanced features, such as dependency version overrides,
platform-independent resolutions, reproducible resolutions, alternative resolution strategies, and
more.
Migrate to uv without changing your existing workflows — and experience a 10-100x speedup — with the
uv pip interface.
Compile requirements into a platform-independent requirements file:
We are passionate about supporting contributors of all levels of experience and would love to see
you get involved in the project. See the
contributing guide to get started.
Some of uv's optimizations are inspired by the great work we've seen in pnpm,
Orogene, and Bun. We've also
learned a lot from Nathaniel J. Smith's Posy and adapted its
trampoline
for Windows support.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uv
by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any
additional terms or conditions.