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:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Or, from PyPI:

# With pip.
pip install uv
# Or pipx.
pipx install uv

If installed via the standalone installer, uv can update itself to the latest version:

uv self update

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

Projects

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.0

$ uv run ruff check
All checks passed!

$ uv lock
Resolved 2 packages in 0.33ms

$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms

See the project documentation to get started.

uv also supports building and publishing projects, even if they're not managed with uv. See the publish guide to learn more.

Scripts

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.

Tools

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.0
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.0

See the tools documentation to get started.

Python versions

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 [email protected] -- 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`

See the Python installation documentation to get started.

The pip 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.

FAQ

How do you pronounce uv?

It's pronounced as "you - vee" (/juː viː/)

How should I stylize uv?

Just "uv", please. See the style guide for details.

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.9.4.tar.gz (3.7 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.9.4-py3-none-win_arm64.whl (19.9 MB view details)

Uploaded Python 3Windows ARM64

uv-0.9.4-py3-none-win_amd64.whl (21.4 MB view details)

Uploaded Python 3Windows x86-64

uv-0.9.4-py3-none-win32.whl (19.4 MB view details)

Uploaded Python 3Windows x86

uv-0.9.4-py3-none-musllinux_1_1_x86_64.whl (21.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.9.4-py3-none-musllinux_1_1_i686.whl (20.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.9.4-py3-none-musllinux_1_1_armv7l.whl (20.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.9.4-py3-none-manylinux_2_31_riscv64.whl (21.3 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

uv-0.9.4-py3-none-manylinux_2_28_aarch64.whl (20.2 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (22.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (22.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (21.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (20.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (20.1 MB view details)

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

uv-0.9.4-py3-none-macosx_11_0_arm64.whl (18.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.9.4-py3-none-macosx_10_12_x86_64.whl (19.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.9.4-py3-none-linux_armv6l.whl (20.7 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.9.4.tar.gz
  • Upload date:
  • Size: 3.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.3

File hashes

Hashes for uv-0.9.4.tar.gz
Algorithm Hash digest
SHA256 57582a149de7788a83f998ddad2dfc50a328aae7a474fbb1617c73a9e2b42ebf
MD5 3fcc74784a9a1b211d955b3b8d488bbb
BLAKE2b-256 7ce471780e9afade36354a76a1e4dc5659605c66446b9d0a0e97c990d2c374a3

See more details on using hashes here.

File details

Details for the file uv-0.9.4-py3-none-win_arm64.whl.

File metadata

  • Download URL: uv-0.9.4-py3-none-win_arm64.whl
  • Upload date:
  • Size: 19.9 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.3

File hashes

Hashes for uv-0.9.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 253133f7f2eac8fed10ad601c56ddcd13d8d81d9343ed9e95873d19b149199f2
MD5 a27e5e7353bac8df3700c5b4033d1c06
BLAKE2b-256 ad302fbaeed4efdda407fa9b3a4c0d7f3b9b53498d13f06498b15decc52ee253

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 21.4 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.3

File hashes

Hashes for uv-0.9.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0840346084d28aa5345eeabcb7f9e727448b56b3b399300447a9155066909925
MD5 d2ffdc92a9ab88b1c145f2926f8dda37
BLAKE2b-256 1bed1d036a7d2ce5c3382c8c21481b0fd10f8de577b401b549c5992b8c00114a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.4-py3-none-win32.whl
  • Upload date:
  • Size: 19.4 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.3

File hashes

Hashes for uv-0.9.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 79efd533016d9bf077056cac72e68fa501e9d0e09576a2c375f7c286d19be9d6
MD5 c30537c3722411829debd9309530edb6
BLAKE2b-256 e8c28f9318e42cbeb9335ab657c9648ce45bb353482dbf86ddeced52116cd9a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c353be83686f769bf50e6c6bc8591ad59752b492c6bb51296e378e55521482f5
MD5 9afd9f7e0ecaed18bfd6e64ba4312309
BLAKE2b-256 c31c4406fb13052409a26a6372e8d70747281143f87d9c488e552390796742dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.4-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 20.6 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.3

File hashes

Hashes for uv-0.9.4-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 dcbcc963232e13e279002844e983cd6d0f53560e75d8a3f7a68e7d68a6021235
MD5 09b09ee4e7c3fe26b982283a248aad48
BLAKE2b-256 969f239b922ce00ca98d3a2df8bcd6d62ed1771043c1e7fb4a99d514263809c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 2feb2adc0a2eb41a757b9cef3226f649452423badf20d68d177b6649342d021d
MD5 d14f36720a7884ed0c9dadf39397c0a0
BLAKE2b-256 3c48aa9994d2b00c08d5976a0a8942f1491acccb325691ba3f945c82417c9dc2

See more details on using hashes here.

File details

Details for the file uv-0.9.4-py3-none-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 3e1b5df83e96a8128b81a9f2bd72a4db752f691515914471b76df994339d2c35
MD5 c68be354f75b6007c022efb6bd95c5fa
BLAKE2b-256 6c14b9291a0e41054f598cc21aa3c0319cf9f9ad0ce5a0a26cf8d14e24d53866

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 39f6b459fdabc80c0afc080ba8bce86e048afa799bc6c5c372f78b14195cf49c
MD5 f841978e10320087e6f8ea30cc352cee
BLAKE2b-256 3802f03d83a67855c7227ce8a452dcd29ef9d3bc233a28693bdae16e61e25aee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d89f88df09d571f6d06228b32a6a71100905eb64343247317d363bcd774ee870
MD5 361f198284443dd0398ef038ba0f7f03
BLAKE2b-256 fa8a235e90024d54aa62a5a4f0afe05ae2be3d039ecb90e3cc0048e50bb14b8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 03a85b02e6ccf1b705ce78bd98da78c90d5a0d0f941756ee842825d850cada2f
MD5 d79d6abead82709a45f8483354bc4ad1
BLAKE2b-256 4d5d17eaf451254ce011ca163bbcb4435eeaa76e5188381d0b4ec60d40a26cf2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b7f7d3fd51627fbcca06cf75d327e060db924d4ca054e1e934b71682d58f1f51
MD5 9fe27c62e071507ee3374e4f79531359
BLAKE2b-256 8cbf2880311bd73951de52ef62ecf65f2a5a16761edeb50f3c6892035f09db04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 df3288f85bd6bfb4b8722bb7223d6723de7c32d213596573d92803f89af9007c
MD5 b67f27cde629a7b1e5d8f2d29f7cc9d7
BLAKE2b-256 7b01a236caffb2430e27346afd07ebaf485406ff56f1f2f915c018bd69525210

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fa33399d5e3e31b753910cfaa6f87022736339cadb140c8896dccb7c6a855e32
MD5 3d35619439804c59a646f30a70217745
BLAKE2b-256 fde6ee0de4ed1770d70915c0dd4329cc7e3d146bf726a8ebbc6e527325c6aefd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9ee7695b6632b74ea62d67fcef732e519d1fdb3f9ecf81c99bfd5a354ff925fb
MD5 7f0fd8c5c97b2cd8c2c85948b2837c91
BLAKE2b-256 f5b424ae03f66eadc6d8fb46962387162f1fef3430c4dfda0542fd5a0ebaa0ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 aa0e144df0276945cbe49e30b577cf51e19b808e5ca55e23b8a1a354857e1629
MD5 93062f78699e3e193280e827200ffbf8
BLAKE2b-256 ae370eab636ac6ffaf8b6d60fb0bd202331060f187e933d43766fa0b3964fe0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 610a219a6d92cc56c1a24888118a5ae1b07233b93dde0565d64fe198a2c7c376
MD5 fcc58f3aef20c01f2b72192a79214e37
BLAKE2b-256 da597ee66db3caed7cc7332e5ca414733d1df761919c8cb38c4d6f09055c4af8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 42012fcfdbaec08e1c009bbdbf96296b05e0e86feb83e1182d9335ae86a288d2
MD5 b0a2b8f1fdb3c4a967597328536dc954
BLAKE2b-256 1115a4e13592544651fb6b676ae88b065a7a8661429cbd6041b4ff05c3b44bbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.4-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 787cf63c2f5c97cc6b30915632351eac655fcd4ec19620bc67cbd6855975817b
MD5 3d8e4e8e379d2d2280a1fb656bf5a547
BLAKE2b-256 bdbdc64d332586ede567827687e77088ee41e56e00d2f822a7769c2a27da276a

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