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 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`

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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

uv-0.9.7-py3-none-musllinux_1_1_x86_64.whl (21.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.9.7-py3-none-musllinux_1_1_armv7l.whl (20.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.31+ riscv64

uv-0.9.7-py3-none-manylinux_2_28_aarch64.whl (20.3 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.9.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.9.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.9.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (22.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.9.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (22.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

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

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.9.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (20.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.9.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (20.2 MB view details)

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

uv-0.9.7-py3-none-macosx_11_0_arm64.whl (18.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.9.7-py3-none-macosx_10_12_x86_64.whl (19.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.9.7-py3-none-linux_armv6l.whl (20.6 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.9.7.tar.gz
Algorithm Hash digest
SHA256 555ee72146b8782c73d755e4a21c9885c6bfc81db0ffca2220d52dddae007eb7
MD5 cefa27572274d099a69b43b69a183c52
BLAKE2b-256 ccf69914f57d152cfcb85f3a26f8fbac3c88e4eb9cbe88639076241e16819334

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.7-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.6

File hashes

Hashes for uv-0.9.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 d13da6521d4e841b1e0a9fda82e793dcf8458a323a9e8955f50903479d0bfa97
MD5 d6b62ff81058965658e1f57463db9a63
BLAKE2b-256 89798278452acae2fe96829485d32e1a2363829c9e42674704562ffcfc06b140

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.7-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.6

File hashes

Hashes for uv-0.9.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 62b315f62669899076a1953fba6baf50bd2b57f66f656280491331dcedd7e6c6
MD5 41389cc9fb291aa09127074a80a3fff8
BLAKE2b-256 de7fe3cdaffac70852f5ff933b04c7b8a06c0f91f41e563f04b689caa65b71bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.7-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.6

File hashes

Hashes for uv-0.9.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 bcf878528bd079fe8ae15928b5dfa232fac8b0e1854a2102da6ae1a833c31276
MD5 5070783056898acf0bc7e3608845ec7d
BLAKE2b-256 7397616650cb4dd5fbaabf8237469e1bc84710ae878095d359999982e1bc8ecf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 777bb1de174319245a35e4f805d3b4484d006ebedae71d3546f95e7c28a5f436
MD5 331d9fa359ab67e55dd5a2fccef97670
BLAKE2b-256 89a92a8129c796831279cc0c53ffdd19dd6133d514805e52b1ef8a2aa0ff8912

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.9.7-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.6

File hashes

Hashes for uv-0.9.7-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 34fe0af83fcafb9e2b786f4bd633a06c878d548a7c479594ffb5607db8778471
MD5 e7c2603a3b491e71a69caf2fbf6a344a
BLAKE2b-256 aaab16110ca6b1c4aaad79b4f2c6bc102c416a906e5d29947d0dc774f6ef4365

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 d6e5fe28ca05a4b576c0e8da5f69251dc187a67054829cfc4afb2bfa1767114b
MD5 b274a9db01e803a796ed9679c790cf57
BLAKE2b-256 d81ac5d9e57f52aa30bfee703e6b9e5b5072102cfc706f3444377bb0de79eac7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 edd768f6730bba06aa10fdbd80ee064569f7236806f636bf65b68136a430aad0
MD5 78b652e902f0124174326800d0b584e2
BLAKE2b-256 56e7ca2d99a4ce86366731547a84b5a2c946528b8d6d28c74ac659c925955a0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7019f4416925f4091b9d28c1cf3e8444cf910c4ede76bdf1f6b9a56ca5f97985
MD5 96b7e1a42fa3ef75589df4ef1694616a
BLAKE2b-256 74ac090dbde63abb56001190392d29ca2aa654eebc146a693b5dda68da0df2fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cf6bc2482d1293cc630f66b862b494c09acda9b7faff7307ef52667a2b3ad49
MD5 67470c16fe7b8fd76d0058146977ddcc
BLAKE2b-256 c75961d8e9f1734069049abe9e593961de602397c7194712346906c075fec65f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c9810ee8173dce129c49b338d5e97f3d7c7e9435f73e0b9b26c2f37743d3bb9e
MD5 b24887ea085d8614107aea3b32c81ace
BLAKE2b-256 c00dd186456cd0d7972ed026e5977b8a12e1f94c923fc3d6e86c7826c6f0d1fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 89697fa0d7384ba047daf75df844ee7800235105e41d08e0c876861a2b4aa90e
MD5 78c1e20db1757b91d8e33fc490c6462c
BLAKE2b-256 df9469d8e0bb29c140305e7677bc8c98c765468a55cb10966e77bb8c69bf815d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 bb8bfcc2897f7653522abc2cae80233af756ad857bfbbbbe176f79460cbba417
MD5 391575a00f0cae5f8e6203711b50feb7
BLAKE2b-256 bee56107249d23f06fa1739496e89699e76169037b4643144b28b324efc3075d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b5f1fb8203a77853db176000e8f30d5815ab175dc46199db059f97a72fc51110
MD5 76eed85e6d3c919f404d7bd518be5954
BLAKE2b-256 37b8cb62cd78151b235c5da9290f0e3fb032b36706f2922208a691678aa0f2df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 56a440ccde7624a7bc070e1c2492b358c67aea9b8f17bc243ea27c5871c8d02c
MD5 68701526d4a1d5a9c04a229301bbaf82
BLAKE2b-256 350ef1316da150453755bb88cf4232e8934de71a0091eb274a8b69d948535453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 635e82c2d0d8b001618af82e4f2724350f15814f6462a71b3ebd44adec21f03c
MD5 6b67626fa0137e68d35f9cfe9a8284d2
BLAKE2b-256 134c03fafb7d28289d54ac7a34507f1e97e527971f8b0ee2c5e957045966a1a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fdbfad5b367e7a3968264af6da5bbfffd4944a90319042f166e8df1a2d9de09
MD5 50143d0e3625e912389b0d26455ef81d
BLAKE2b-256 f57db618174d8a8216af350398ace03805b2b2df6267b1745abf45556c2fda58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1aaf79b4234400e9e2fbf5b50b091726ccbb0b6d4d032edd3dfd4c9673d89dca
MD5 4e57c9ca73fbac43375f640d26e5c945
BLAKE2b-256 6fb71b1ff8dfde05e9d27abf29ebf22da48428fe1e16f0b4d65a839bd2211303

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.7-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 134e0daac56f9e399ccdfc9e4635bc0a13c234cad9224994c67bae462e07399a
MD5 91582223274f1dde1cefe16f10c982e2
BLAKE2b-256 5838cee64a9dcefd46f83a922c4e31d9cd9d91ce0d27a594192f7df677151eb4

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