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.20.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.20-py3-none-win_amd64.whl (14.2 MB view details)

Uploaded Python 3Windows x86-64

uv-0.4.20-py3-none-win32.whl (12.4 MB view details)

Uploaded Python 3Windows x86

uv-0.4.20-py3-none-musllinux_1_1_x86_64.whl (13.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.4.20-py3-none-musllinux_1_1_ppc64le.whl (14.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ppc64le

uv-0.4.20-py3-none-musllinux_1_1_i686.whl (12.8 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.4.20-py3-none-musllinux_1_1_armv7l.whl (12.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.4.20-py3-none-manylinux_2_28_aarch64.whl (12.2 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.4.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.4.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (17.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.4.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (13.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.4.20-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (13.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.4.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (13.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.4.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (12.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.4.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (12.1 MB view details)

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

uv-0.4.20-py3-none-macosx_11_0_arm64.whl (11.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.4.20-py3-none-macosx_10_12_x86_64.whl (12.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.4.20-py3-none-linux_armv6l.whl (12.5 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20.tar.gz
Algorithm Hash digest
SHA256 b4c8a2027b1f19f8b8949132e728a750e4f9b4bb0ec02544d9b21df3f525ab1a
MD5 dd15e30e8f4a6b806a7758077876fdfb
BLAKE2b-256 bb981e634c30f8c0739d131caf98213825063354eb9d4ca868a20c82550150e5

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 653bfec188d199384451804a6c055fb1d28662adfee7697fe7108c6fb78924ba
MD5 37506a4ed0f1b5eec7f023f4bf4893e1
BLAKE2b-256 1637505d6dbfb6056c45833d1062a510b547fb7ef8cd48914ca7268a0a4797d9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-win32.whl
Algorithm Hash digest
SHA256 dbf454b6f56f9181886426c7aed7a8dfc8258f80082365fe99b2044ff92261ba
MD5 612cb038fe842492a86e3a3d83a79d68
BLAKE2b-256 79bf5ea3fcf6e0b769c2c1f8cf919a4cacef3112a0e3e5dd26de31b991c3074c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 74f78748e72893a674351ca9d708003629ddc1a00bc51100c901b5d47db73e43
MD5 79bf7c5b0ffdb5e001f4f0d4784cb4a5
BLAKE2b-256 fda6f77ca7cd9f6421e96c551aebeb118ea2c079bc93e156a778286ee55ed112

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 8ad94fb135bec5c061ba21b1f081f349c3de2b0f8660e168e5afc829d3069e6d
MD5 08fe2699ffca2adeee05885484e988fe
BLAKE2b-256 3a59f21395330083937668e5afe238aa1f5ed23312088e2610e803ec32c1106f

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 309539e9b29f3fbbedb3835297a324a9206b42005e15b0af3fa73343ab966349
MD5 91cdf065dd4bcd19a6114a3bafc20afc
BLAKE2b-256 77af9751877609daacd1565298c4f06afc22e045d24f96f45122450c605fb583

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 588aedc47fe02f8cf0dfe0dec3fd5e1f3a707fdf674964b3d31f0523351db9d2
MD5 3afd83c94d1a1a95498d66787a855589
BLAKE2b-256 75f19046850aaddc67d16a95ede0fe9698eb4a34b0c498a3fbaffa0487f70fb8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ec4a7d0ab131ea749702d4885ff0f6734e1aca1dc26ebbc1c7c67969ba3c0fc
MD5 b63a14efe94f1b192f7b2f6276983e7f
BLAKE2b-256 f8787e6db5e4c1f1dd285cd66046c4591e0fd028ddae4e22ad3829c79396d805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8e3492d5f1613e88201b6f68a2e5fba48b0bdbe0f11179df9b222e9dd8d89d3
MD5 68658a6db7a5af7090a4a36dd04c0c67
BLAKE2b-256 fb5dc66b95e81c0d5886ddc469ceb507beee8209f515626ccd7a5a662883aeba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a65eaec88b084094f5b08c2ad73f0ae972f7d6afd0d3ee1d0eb29a76c010a39b
MD5 3a93136124fd161abadb184426688958
BLAKE2b-256 d0530e16496b7f192143c7ca16291831e422735a56bbe038403e75a80f62886f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 865c5fbc2ebe73b4f4b71cbcc1b1bae90a335b15f6eaa9fa6495f77a6e86455e
MD5 44a4ceafed1962d519448e303af166da
BLAKE2b-256 5a04b155211be91dfc0bbd7debadece4f7444b268f94eda7a7fd592c81078374

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 5d62655450d173a4dbe76b70b9af81ffa501501d97224f311f126b30924b42f7
MD5 a2934ea2d8f669a9c359638e9b2511a0
BLAKE2b-256 99130ac3247923c20f8dd41cc08c98e84c22f1f3083b6da7befba50145120d7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 092d4d3cee4a9680832c16d5c1a5e816b2d07a31328580f04e4ddf437821b1f3
MD5 f4dc107e4b581da87cba500677bd4f1a
BLAKE2b-256 edfb7c049230e50883a7c36d1a181818f2f0e2b4cba653b8256a50f1d77149d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a6faba47d13c1b916bfe9a1828a792ba21558871b4b81dbb79c157077f558fb3
MD5 d6ab4bfd82db29689a779e755b85a886
BLAKE2b-256 87a54799e1414e89a2f6ed45bdada2ebd939337aa8f8cca68c019900915ca56f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 555f0275c3db5b1cd13f6a6825b0b0f23e116a58a46da65f55d4f07915b36b16
MD5 719f4cddb29446c5f14354cead653751
BLAKE2b-256 723a9ba6c5c143bf466ec4df3c5cd57fa3c875da2dbca4c86707c4cb060eb328

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d37f02ae48540104d9c13d2dfe27bf84b246d5945b55d91568404da08e2a3bd8
MD5 ed7c529f100a38452d150da9e804ca2c
BLAKE2b-256 b869aa5772e11dc9283b33e137094ca07a1c3592a9f8777d360641badb6d65f3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1f20251b5a6a1cc92d844153b128b346bd0be8178beb4945df63d1a76a905176
MD5 80d3f7cf1a67cdb534eb057e30b8391b
BLAKE2b-256 2fbd3efaa2d65fcec0b262d77809371e0748533255408d98d0142200de393576

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.4.20-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 d0566f3ce596b0192099f7a01be08e1f37061d7399e0128804794cf83cdf2806
MD5 e7128ad3f223a164601dd3de1b7a3c85
BLAKE2b-256 d0b4c66c38772657ef8406f99f89abe5e575c6083dc517fbd32c70b60f2bb7d1

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