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

$ 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.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.5.2.tar.gz (2.2 MB view details)

Uploaded Source

Built Distributions

uv-0.5.2-py3-none-win_amd64.whl (15.3 MB view details)

Uploaded Python 3 Windows x86-64

uv-0.5.2-py3-none-win32.whl (13.5 MB view details)

Uploaded Python 3 Windows x86

uv-0.5.2-py3-none-musllinux_1_1_x86_64.whl (14.3 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

uv-0.5.2-py3-none-musllinux_1_1_ppc64le.whl (15.5 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ppc64le

uv-0.5.2-py3-none-musllinux_1_1_i686.whl (13.8 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

uv-0.5.2-py3-none-musllinux_1_1_armv7l.whl (13.4 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

uv-0.5.2-py3-none-manylinux_2_28_aarch64.whl (13.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.28+ ARM64

uv-0.5.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

uv-0.5.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

uv-0.5.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (14.5 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

uv-0.5.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (14.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64

uv-0.5.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (14.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ i686

uv-0.5.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (13.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

uv-0.5.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (12.9 MB view details)

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

uv-0.5.2-py3-none-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

uv-0.5.2-py3-none-macosx_10_12_x86_64.whl (13.6 MB view details)

Uploaded Python 3 macOS 10.12+ x86-64

uv-0.5.2-py3-none-linux_armv6l.whl (13.6 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.5.2.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.1

File hashes

Hashes for uv-0.5.2.tar.gz
Algorithm Hash digest
SHA256 89e60ad9601f35f187326de84f35e7517c6eb1438359da42ec85cfd9c1895957
MD5 5dfc495e86d4be0faa075b89a02e337b
BLAKE2b-256 1351985549772d9c76d18b99ab188afe2aaa7a9afd948b97a03d7061e4716798

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.5.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a4d4fdad03e6dc3e8216192b8a12bcf2c71c8b12046e755575c7f262cbb61924
MD5 54a421ecf0ef80473d0e573a88bf5317
BLAKE2b-256 5584ab10b46e0523aa8ea290798ec7ca4dde339601697d2319d19564c3552b34

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.5.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 2597e91be45b3f4458d0d16a5a1cda7e93af7d6dbfddf251aae5377f9187fa88
MD5 7fa93bf1b5629737c6a59302199e5665
BLAKE2b-256 3bbabf58db3f3520c18fd7dc43cc302432bd49dc4a20a612cda587756f9fb035

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 772b32d157ec8f27c0099ecac94cf5cd298bce72f1a1f512205591de4e9f0c5c
MD5 1f629eb3787ce191856417cdbfc0cbac
BLAKE2b-256 192941fd2928e79d343d7009b92028df868d13307f365949a9649d5fff9c11d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 67776d34cba359c63919c5ad50331171261d2ec7a83fd07f032eb8cc22e22b8e
MD5 e1dc02c13d79730346ee93120bb45fb6
BLAKE2b-256 b9ed6bf3b02e5672b9e4f4c9acfc9d92cd114572ce7d5ae458c423ab849e3738

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 27d666da8fbb0f87d9df67abf9feea0da4ee1336730f2c4be29a11f3feaa0a29
MD5 3395f6bd48fec1270a00b638ca9b5b44
BLAKE2b-256 fceae3b6fe349a63069f2724a8f5992e3d7da0eade867f9b5f6470afd8512046

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 c9795b990fb0b2a18d3a8cef8822e13c6a6f438bc16d34ccf01d931c76cfd5da
MD5 25d6be0c8465966f98ba0d4b9a2e24e6
BLAKE2b-256 a3ffa25a9619201857cd3f6a2012d5d49ef9cfc76cd8b426f941b3c709c124c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 675ca34829ceca3e9de395cf05e8f881334a24488f97dd923c463830270d52a7
MD5 3b9ef771263152ce42fbbe9c1e8d4faf
BLAKE2b-256 444f27fb79bf0300d110e9d9bf6ae31ffad516f6af9fca8a518208c9b71d1093

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 374e9498e155fcaa8728a6770b84f03781106d705332f4ec059e1cc93c8f4d8a
MD5 f3227fe425c4cda87a7f4c1782c33894
BLAKE2b-256 82ce11fe4448173570b9a4ac09a5b21b6b2d90d455ce454c3e344e5fcd8b3430

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5052758d374dd769efd0c70b4789ffb08439567eb114ad8fe728536bb5cc5299
MD5 0712a6aa1c7f2c01f4a6fe791e0e0b91
BLAKE2b-256 6784525f395051bf753a92509a0b19b8410017417e96705645a00b3554da3aa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 71467545d51883d1af7094c8f6da69b55e7d49b742c2dc707d644676dcb66515
MD5 9497ca354973cc84037a37fd4e123711
BLAKE2b-256 8d69685fdaa80434d680248e588e339bce08251167fcdd008ee384669cd7e507

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 dfcd8275ff8cb59d5f26f826a44270b2fe8f38aa7188d7355c48d3e9b759d0c0
MD5 ff3ec7cdb53d94af1a489339d827f7fe
BLAKE2b-256 03b5bafafe3132e2fdfde3a0931f5fbb0116fbd761bf813cc260a4672ff6fa2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cfba5b0070652da4174083b78852f3ab3d262ba1c8b63a4d5ae497263b02b834
MD5 914dbebd2b5b0d4c736995c5f23e01ae
BLAKE2b-256 76ecd6811c51f02f8426610468639d7c0f7bce50854e22491e6fd43dc6197003

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d1fe4e025dbb9ec5c9250bfc1231847b8487706538f94d10c769f0a54db3e0af
MD5 0e73480f66208ba16c00e9abfcd0787b
BLAKE2b-256 7cc571d05e9ca73ddbf83fb320105bdf966bab9e5d04d3708f58f8daea8d94a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 15c7ffa08ae21abd221dbdf9ba25c8969235f587cec6df8035552434e5ca1cc5
MD5 f069452ebc95409844ea51f6ee095ae2
BLAKE2b-256 12464239d5dc97d6d292256baef0750c69f19ef427febcbbb4ab20b4b5a1a49b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8a9897dd7657258c53f41aecdbe787da99f4fc0775f19826ab65cc0a7136cbf
MD5 d2465699cf0aaaafd61a40b755ce7bac
BLAKE2b-256 24e0f468ea89d85fb4c7a442b999d6fc1a5ef32e6fa3c872e471f0a1ba856069

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d0834c6b37750c045bbea80600d3ae3e95becc4db148f5c0d0bc3ec6a7924e8f
MD5 ad0755815aa279f6125d3ae3fe338bd0
BLAKE2b-256 f75edfa65e7e0dd0db9e7b258b15e2cc5109a89c5a61939cff8a4772e1dd8478

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.5.2-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 7bde66f13571e437fd45f32f5742ab53d5e011b4edb1c74cb74cb8b1cbb828b5
MD5 e1a927c017e9fd8fa485de7ead6cd06d
BLAKE2b-256 59e8542ef2ce56366f550f1cb93c1d4fd75bdfda440be56e8e99303f694193ce

See more details on using hashes here.

Supported by

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