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

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

$ uv run ruff check
All checks passed!

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.

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

$ ruff --version
ruff 0.5.0

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 3.11
Pinned `.python-version` to `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.5.11.tar.gz (2.5 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.5.11-py3-none-win_amd64.whl (16.2 MB view details)

Uploaded Python 3Windows x86-64

uv-0.5.11-py3-none-win32.whl (14.4 MB view details)

Uploaded Python 3Windows x86

uv-0.5.11-py3-none-musllinux_1_1_x86_64.whl (15.1 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.5.11-py3-none-musllinux_1_1_i686.whl (14.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.5.11-py3-none-musllinux_1_1_armv7l.whl (14.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.5.11-py3-none-manylinux_2_28_aarch64.whl (13.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.5.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.5.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (19.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.5.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (15.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.5.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (15.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.5.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (15.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.5.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (14.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.5.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (13.7 MB view details)

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

uv-0.5.11-py3-none-macosx_11_0_arm64.whl (13.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.5.11-py3-none-macosx_10_12_x86_64.whl (14.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.5.11-py3-none-linux_armv6l.whl (14.5 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.5.11.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.10

File hashes

Hashes for uv-0.5.11.tar.gz
Algorithm Hash digest
SHA256 6094ca4c5f917d58f884011416bb15066e222ef8d0494f26b0156ac97ad6810b
MD5 4e8fdf9e8d1e2f09e590ef1ad6db505c
BLAKE2b-256 c8283000f4e3331a7ad3e9c842268110d6cd1686c12a4e3f44df12fffbc39931

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.5.11-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 48a3bcbc480d5f922145cd2c68182dcb11effa3ca9f5a9ae9b2f6ce21f9ade32
MD5 e30bb123afa5f9b78d1d17e47c7d6c9c
BLAKE2b-256 4583a1f73ef111979d6e16b717a9333af2962434a9ea47122836840cdc80d31e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.5.11-py3-none-win32.whl
Algorithm Hash digest
SHA256 4bd0c2868dde8ddef89b9e33a85913e450bb71b834f6d73b525e450e840639c8
MD5 16b71967e1f674dc09ad65b4e342eac1
BLAKE2b-256 814fd533c3975ae295a3a4528ec5022cf49162200e1721a9d0ed110369099560

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 398eb87ef23b0cd25a8bfcc0dddf0d360d92aba03f660962f447a6585ced440b
MD5 b7d7b42013022f91d0863f4b57eb87ce
BLAKE2b-256 061bdbf2473888d41f553d37ccb811a2645fe85386e19799eb2b35e4ba8519c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7d2571f175ded2631220c4586e3e14e93952db4a681d0ca094e6cc4124001a83
MD5 b09f31d5f10fd2a8a4488b41f92a0008
BLAKE2b-256 ec5dfd9b447f1f3e40d3b4c5ad404e0bf29ab8126ddf8ded128c440fff6cb295

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 a2461a563e28b75cc3b396ed910feecac9518a90c49ac312b1a9da77bae10911
MD5 70ffc7660c24e7da765c05e1a22cafef
BLAKE2b-256 e9dcac5da28965b6cc6ef9eb34f8617f94577bfe7345b14c90fb54efae0905e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d24d4e816010b692d1180b69eb8aef1d16657a43b5e2edab8be71a2e700ccf9f
MD5 ddee915378e895ed8101f2eed8e682ba
BLAKE2b-256 8865b18bcff24029615075bf9987b3249befdfbc858ef9711b56844239117992

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08c660c69e7dd874b52ad96b597b57e9f999659f3d9827cdbad884a68e48f7e9
MD5 50c6f75171466ea0714c7069101a79da
BLAKE2b-256 9b9713a5a464529148f79f2aa2877bc0033357c5f9fb42c72b3cb4a2a66641f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e1f6a7d727e86deb67d0a4df669de8c03033cd19ed23d27c7113abd7cb0b9bd7
MD5 ab174c5956b583233cb6849609cb0610
BLAKE2b-256 985110834427c3f7d3600e8a955ab69d8c85acba9ad3d5c77f05cd63dc212140

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 914dd829808e5d65bf261cbfbb8a01ee80f7d90bc8c9e54f2fc5aa2501f5eec1
MD5 28ebfbeb22281b8449791c6795f9f39b
BLAKE2b-256 8e02d20701859a3c82a20120942b87cf3bc54af162b62a2660d3ca942268c64e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 cefa3ec37f83acdcb4b067ef09622a78e56a22fc6376f5705cd64435bc9bc280
MD5 99083e6cdce4f35c5efffb9f2619852c
BLAKE2b-256 d7348d740eaa1768ab196b1b03854a51df963b1207cb266a83f4f505edc7c36d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c2d455db44cc5de70e359e88da9659397f52e78190a9a8922defdee7ed26787
MD5 5940e8e05ab7721c6f2038cc451b0312
BLAKE2b-256 65dc2b018f459628c43bd34b72feba515d18ba576a87819e5914d48c05a1e07f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7d1e78c010cf112ddd02d704579e6501c3104a34c944c01f618fc417d6fd55a8
MD5 c210d6569def4494d901c46a1a28118b
BLAKE2b-256 7a85553f32ea6640a534081d8f46a1575a107d9b3e79d0b8758e94406f3c7400

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 1fe74893f77f343a43bcfaee2600b63f99a26a82568cfe16d0d1b5a77d9b033f
MD5 921a904c133dce60d5af2eaa21db6f38
BLAKE2b-256 55418a2fb89de0341586d2988e0874b6610278200e48b52f10f29f0ec144d507

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bac233c1e3ae343d0904f78e4a18ca0b479d304aa8de2175df9d72b76dd7764e
MD5 8958d71fae70ef8786fd7ce8360665c2
BLAKE2b-256 338e287acf621210c1c2d81c3dc5616ef56471e589d3879f9b26fbc135df85d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 164e068ebdf1177c8863c870bb68e411105b44d53cd91e3b9d8f5fd9202420d8
MD5 697d2c1b5b9df35a606f3b82653eb7f5
BLAKE2b-256 f02fbecf81ef79a2a38d5c30ac5554062081731765069ae2164858b252f03cbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.11-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 736c9b8c86b18eb4dded22cd0f61cc0302bf387de860806c6700b561a4bb95f9
MD5 d6e6b9d8613954afa8efeaa002c1b537
BLAKE2b-256 27a0be21638a31d0fde51ebf027a040893962f5d69615c10bbcb2808baa8d58f

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