Skip to main content

An extremely fast Python package and project manager, written in Rust.

Project description

uv

uv image image image Actions status Discord

An extremely fast Python package and project manager, written in Rust.

Shows a bar chart with benchmark results.

Installing Trio's dependencies with a warm cache.

Highlights

uv is backed by Astral, the creators of Ruff.

Installation

Install uv with our standalone installers, or from PyPI:

# On macOS and Linux.
$ curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
$ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
$ pip install uv

See the installation documentation for details and alternative installation methods.

Documentation

uv's documentation is available at docs.astral.sh/uv.

Additionally, the command line reference documentation can be viewed with uv help.

Features

Project management

uv manages project dependencies and environments, with support for lockfiles, workspaces, and more, similar to rye or poetry:

$ uv init example
Initialized project `example` at `/home/user/example`

$ cd example

$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
   Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
 + example==0.1.0 (from file:///home/user/example)
 + ruff==0.5.4

$ uv run ruff check
All checks passed!

See the project documentation to get started.

Tool management

uv executes and installs command-line tools provided by Python packages, similar to pipx.

Run a tool in an ephemeral environment using uvx (an alias for uv tool run):

$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
 + pycowsay==0.0.0.2
  """

  ------------
< hello world! >
  ------------
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

Install a tool with uv tool install:

$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
 + ruff==0.5.4
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.4

See the tools documentation to get started.

Python management

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 pypy@3.11
Pinned `.python-version` to `pypy@3.11`

See the Python installation documentation to get started.

Script support

uv manages dependencies and environments for single-file scripts.

Create a new script and add inline metadata declaring its dependencies:

$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

$ uv add --script example.py requests
Updated `example.py`

Then, run the script in an isolated virtual environment:

$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>

See the scripts documentation to get started.

A pip-compatible interface

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:

$ uv pip compile docs/requirements.in \
   --universal \
   --output-file docs/requirements.txt
Resolved 43 packages in 12ms

Create a virtual environment:

$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

Install the locked requirements:

$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
 + babel==2.15.0
 + black==24.4.2
 + certifi==2024.7.4
 ...

See the pip interface documentation to get started.

Platform support

See uv's platform support document.

Versioning policy

See uv's versioning policy document.

Contributing

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.

Acknowledgements

uv's dependency resolver uses PubGrub under the hood. We're grateful to the PubGrub maintainers, especially Jacob Finkelman, for their support.

uv's Git implementation is based on Cargo.

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.

License

uv is licensed under either of

at your option.

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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv-0.4.16.tar.gz (2.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uv-0.4.16-py3-none-win_amd64.whl (13.1 MB view details)

Uploaded Python 3Windows x86-64

uv-0.4.16-py3-none-win32.whl (11.8 MB view details)

Uploaded Python 3Windows x86

uv-0.4.16-py3-none-musllinux_1_1_x86_64.whl (12.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.4.16-py3-none-musllinux_1_1_ppc64le.whl (13.8 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ppc64le

uv-0.4.16-py3-none-musllinux_1_1_i686.whl (11.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.4.16-py3-none-musllinux_1_1_armv7l.whl (11.4 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.4.16-py3-none-manylinux_2_28_aarch64.whl (11.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.4.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.4.16-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (16.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.4.16-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (12.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.4.16-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (12.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.4.16-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (12.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.4.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (11.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.4.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (11.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.1+ ARM64

uv-0.4.16-py3-none-macosx_11_0_arm64.whl (11.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.4.16-py3-none-macosx_10_12_x86_64.whl (12.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.4.16-py3-none-linux_armv6l.whl (11.6 MB view details)

Uploaded Python 3

File details

Details for the file uv-0.4.16.tar.gz.

File metadata

  • Download URL: uv-0.4.16.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16.tar.gz
Algorithm Hash digest
SHA256 2144995a87b161d063bd4ef8294b1e948677bd90d01f8394d0e3fca037bb847f
MD5 92229a2ad40feddaa3a07c194c0dd5db
BLAKE2b-256 5a7aace9d252218058b4bcab29fc44f866388da7d9aa71c736b84f7133154641

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-win_amd64.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-win_amd64.whl
  • Upload date:
  • Size: 13.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 136f4b1f8d3a6f2e7f87d009cc4b75be1e52b8b9837ee97600fdd3b2db960a53
MD5 659e0a3560e842bafd895eaa4ac2df9d
BLAKE2b-256 40eeeaf7556ad82a8e99de73a2e4065d1ee22a8dc4b49c18d2eb3d346cb6418b

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-win32.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-win32.whl
  • Upload date:
  • Size: 11.8 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-win32.whl
Algorithm Hash digest
SHA256 1497dbb3a1b41c6c407e0dc7c6b40ca012796b3f9370f0dcbe4edf4dc098a2ec
MD5 279c376f1eabe33c9abab108a2bffc5d
BLAKE2b-256 8c07c7f0ce4d06e9f78cc90b543dcfe71e7ae454db97f56278afe7bf3a2f69a1

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 12.5 MB
  • Tags: Python 3, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d1712f1c0df309f7682d7e40783ab55927cc1e7108e43847b2a0b795ea855c45
MD5 07e5a38948c1aed2996eda60d8336120
BLAKE2b-256 d492b93efc1ee1412f260f2191746635f7981af33caedf944f66311bb2cd89b4

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-musllinux_1_1_ppc64le.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-musllinux_1_1_ppc64le.whl
  • Upload date:
  • Size: 13.8 MB
  • Tags: Python 3, musllinux: musl 1.1+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 2a566febc7cbe76e42ad83352c28dd2fe64290e6809f1dfd07f3f158ea5cc68d
MD5 daa7146cff6ee47e381fb49b101a4592
BLAKE2b-256 06e6e3d4b6b7347b66b1b9dbc9a5cac4faddd299b1f2e33d547507b78f70a4eb

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-musllinux_1_1_i686.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 11.9 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 87505d25163f6fe0afd85c7952ab66593aa1ecc77a41f65e910760e90bd53b4f
MD5 360d66ccac212ce8c88f29fee8c3fae7
BLAKE2b-256 b27bf04b0a3fdb107867ef09fbe27a8c0b1f11f23f0cf85786fa18d57e452cec

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-musllinux_1_1_armv7l.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-musllinux_1_1_armv7l.whl
  • Upload date:
  • Size: 11.4 MB
  • Tags: Python 3, musllinux: musl 1.1+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8147b2998bf9eb743d872de3e469bbe71622126be54ca377bfc0028042bfdad2
MD5 29832b46a69475351ab6958bade3a456
BLAKE2b-256 86217f0860ae1dccee958f988c3dbf0860f28efef4d30a371edfed8d2fb73641

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 11.5 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 29fdf36b2e4de02e676bb2ae3ca25bccb97d457f8bbb5c5a58fc4f223df1e235
MD5 4867436a3b63cb32e2071985d62a244c
BLAKE2b-256 fc17df1e4ce851a9175e2390d588f04a3a2f4241eea5b549ad86de27ce02bd08

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 050715938e78c6d69d9bdd6a9bd536c92c9f516ac0ca252726c546e8dc7af30d
MD5 e904927e7cb982f0b44c92bdf939dd69
BLAKE2b-256 1e389c4464a36b04eb03cad3ae7aeb48a0f0024063cefe15198f0aa2f9274da8

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c92a1a2bf541a3f65b5b2502ca51f8709e8ac8bb85846c87c65d343e66ede622
MD5 9c85e953878aa9cf0581c92c6cceaf53
BLAKE2b-256 8662d40b84bcf798d4ecb937cb505ac96c27808bf22ce24ce7d2e5fcfab1e625

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 68390b39b36ddbfe48033f308f4e983879b49ce345de2105e5cf3d3baa22dfea
MD5 841f8634281bbba9ac153475cca4bd36
BLAKE2b-256 adfa77d72f20fb6e3e405b8af867dc7c2d660bb2e8fddd03f5ef2b3f7d071cf7

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 5ee1c25c8296d932fa2f0629ad6d1b9b04e9f5f0a0f1e90e64d488d13861e533
MD5 d73bde0d1a1cbed850b4605d1835aa89
BLAKE2b-256 d20e9df458aba4355bb315a2a0231d47be43ff31532b83e0fbbd8cb1d1845e49

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 43c7339114431565679f42d3c85b4c7ba5dfdf1d9ad5f89682c1177828161602
MD5 ce3017d2f363578be1470bb6364e1a87
BLAKE2b-256 a032b4bf9ee2c7f0940bec3ac81c39590e37ab6e52f8fd3d7450f3ffee1fd387

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c54b1725836e5a84168f705a395e21353bdbb2d47e77d645cb0622a77defcf04
MD5 4be8d45ecbc31acee93c6e9183717960
BLAKE2b-256 0ceb1084f082f6d04c3c29cb0edabc201783906a7d428865b8f9d50b10ccb949

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for uv-0.4.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c390d0887e0bc918d96660460a89101368af28815c40ea26795ab801651d128e
MD5 3f2b44efedbdbbbf7f34aea57a668997
BLAKE2b-256 c71a5072db5b6bd71bc0e504a6c2927a909ccf0a68ecb7a8fa49deaaaee82b7d

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 11.1 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97529f45c0720cafa6870ae3d9a43449c34f6c762505249dcd033ca6d7b121ec
MD5 58a625ccb9828cc64ec62c1039a240d0
BLAKE2b-256 0c32443b9ae56645983897d41a3166e0f62031c934f7a884a3e3ecdee7fe5ee8

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 12.0 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d501b14f491057c102e2f6be92e5a1da973453b893fd727a552908fe8a8a1061
MD5 a65b9c1cf7816b9b0affa3a1c1468e7f
BLAKE2b-256 ffe32646adc62c090fdcf864828a8c1ddb7981c2b76c8fb27faa10cf233a8d28

See more details on using hashes here.

File details

Details for the file uv-0.4.16-py3-none-linux_armv6l.whl.

File metadata

  • Download URL: uv-0.4.16-py3-none-linux_armv6l.whl
  • Upload date:
  • Size: 11.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for uv-0.4.16-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 9de9bfd82d5ec1b0180976b1e5db389c7f13e59a2b08037faa93fef474c63517
MD5 c20afd6354c521f78f94413f6b5b3044
BLAKE2b-256 e210e607af4571057cf309038b6249e3d559996d9df6b828505360d999e176af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page