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.8.18.tar.gz (3.7 MB view details)

Uploaded Source

Built Distributions

uv-0.8.18-py3-none-win_arm64.whl (19.6 MB view details)

Uploaded Python 3Windows ARM64

uv-0.8.18-py3-none-win_amd64.whl (21.0 MB view details)

Uploaded Python 3Windows x86-64

uv-0.8.18-py3-none-win32.whl (19.2 MB view details)

Uploaded Python 3Windows x86

uv-0.8.18-py3-none-musllinux_1_1_x86_64.whl (21.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.8.18-py3-none-musllinux_1_1_i686.whl (20.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.8.18-py3-none-musllinux_1_1_armv7l.whl (19.8 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.8.18-py3-none-manylinux_2_31_riscv64.whl (20.8 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

uv-0.8.18-py3-none-manylinux_2_28_aarch64.whl (19.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.8.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.8.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.8.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (21.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.8.18-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (22.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.8.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (20.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.8.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (19.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.8.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (19.5 MB view details)

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

uv-0.8.18-py3-none-macosx_11_0_arm64.whl (17.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.8.18-py3-none-macosx_10_12_x86_64.whl (19.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.8.18-py3-none-linux_armv6l.whl (20.2 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.18.tar.gz
Algorithm Hash digest
SHA256 b495e9cfb857060a2a3c25540d0ef9d40991dbfc8a8254679543608816c1921b
MD5 4918db68bc35217dee9ba0fdcc038246
BLAKE2b-256 6d0b6e968a7a3210da8b43535cc70422eab114332ecd1bdfdb4df15746979f2b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.18-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 a1493b8184175af5474c75fa432940969cf6452976c37ddb8c9e28afa1d25742
MD5 89beda05cca4e951f9e55a2e087e9ebf
BLAKE2b-256 b77dc3c09a3c5640db2b2a00b343e64ad70defd02b4b5e0ab221ff210c85de79

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.18-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 313d09b7c076ad904853fb2788eab34b1541db67cc2feaf67a6f0f81bc3b346c
MD5 c25c69840fa2dc68e52c9f69ba6b7865
BLAKE2b-256 4ff5c2dc1d07bae2687625ef29ffdd51cc4971d38077fb27022bc5fd13437e47

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.18-py3-none-win32.whl
Algorithm Hash digest
SHA256 ee28459f377a1afcd0450ee635106dee8d77bea69d8dcd42bc4eecd3361ccab4
MD5 3ab27165b2abb1dff29ea2ab0c9b3d9a
BLAKE2b-256 e3c06d188d3dc9230244eb933aedd820c6428237646f8583077e7ebfd57f4491

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0c492090312e3252091ef5bc570ac46a616b06d9c0ef448898eeb381f6742c0d
MD5 ffcac2dc2d54155c416b6b59ec0423d1
BLAKE2b-256 60dc8a1d11b7de323f579b7e829fe77d42e81223eab6cb6714686f1e3b76227e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 336fad21ad357ae5e8cd2b75142d31d109dcc8ac3dea9fa1f4417993087f48bb
MD5 fa35425e3e9b36e6b025c7c9d4d68c5d
BLAKE2b-256 9d1be6f67c485cf3acf4af7ceed97fe162a5c201a6514610622ca7d21015a907

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 a8f98de826a92a71956d6f255b0d93865a4d4821fa7c76c81b0fc20e15f05189
MD5 221cfe49057de0d40c8f9d29fac6ea9f
BLAKE2b-256 8b0332e00cbc4fce767a26c2341bfd10317d9ec9b27b811f5d03075734e4bdb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 45d0e8ab23d7bc8a32596bb3ef7569e95c134e5fff26ab68c091f3c44b7e7caf
MD5 e2403b999f0aa804fe1dce50e4725219
BLAKE2b-256 d3f2669810996e5d164504eea5639fecff28ccf2c9cc98a9b80b4f36516420b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b8067f1cf8208dd6f9efc9e2e67c165c97b413ea48f90ba4ffb5caf85c1e5ce0
MD5 f1c9de5732c1cc524bb0ea0f3313903f
BLAKE2b-256 498c6d866287558c5aae930c4f71565000994e4b6b14e56b5c86ed1b32241820

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9933c17dd618ca1c7e6aee877e928cd8583c20ceef9360917803a49c664a917
MD5 fcd10ff8072c1abed2679e9b33760818
BLAKE2b-256 57f6b55bf6af76e3188d63db016a65c337fe23828d6b705e58412d526b748da1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 428d2effa05d2c0b33d30c45eac0a15eddb2ac369b987b8eb651a033f90fd73b
MD5 ecd97ad00ec37ed55f10f527f2925121
BLAKE2b-256 6c09ca38d471ecf5e48b61e649b407315790581871dbea49ea34577b8a22276b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a8dc04c632881263a880084292bbfb0140270787b12435278e4b6fc342761efe
MD5 72be2f6f3b48b3455ffb1fe7c1c88e73
BLAKE2b-256 83f6751e1544396796a5cf5c9616ab50f14969e15708eb2746ef854a038ba9b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 3073e1fc28ba5cb9d04a09bc0bd761569d3f3f1cc4252810c3992465c9579334
MD5 62c26f701713b0109956b69964c5bd71
BLAKE2b-256 ef7a07fbdd3e966e86fc6dd18fe46fce51f27d799cccb06b8f95134dec800f0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3a8d4bc46fb699d1e172de3948870f5a10408e59e5c0c184ecee1d5be02cb740
MD5 d7128eb40722a138b405c68f93937403
BLAKE2b-256 fc0fe46774ee081c56632acc4f8c3c35ddb3ce4bc0e8535da8907ce4623aedb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 30b89b85840500a110a0bfaf7ca97a52803617873c63e4c3cad866ad93d13ed3
MD5 7ed2e728609b33fb2bec28ccf08b853b
BLAKE2b-256 5b56a2309381dd2138e67b22f004fb4e26b04e8e06b04dac50f0c392e3f2ae54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 087b9c8afe50585b1b4aa880ef5fe3c8067268abf8461d01cd59f65517a0696b
MD5 9f10d509518b5910920393c9522b59bc
BLAKE2b-256 4b893c9ffa0c971eab50974a976eed6d2e00d8e3e0b6146b8b45b699f64a1224

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e321544054688df7115041cc172865e5e0f9377b7b9e351e67d7db27c99c4080
MD5 8d28eac8a6b751f216f5358762d4f53e
BLAKE2b-256 4e797af5b261b061b1dd92eed0be1a14264c34717006e651a83018c15adb2043

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 46668347e9b29b254a6fc45fbd9788e7c630f0b4f3f7d894a1d3d4eecb20c3e4
MD5 e8266e04c2ae4117a3712163f6442aac
BLAKE2b-256 b6973a4ba6d5fa4853f96574cb085fcda4407199b62abbc0b8b170d4e3b6aa5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.18-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 42b2b0a3c9d0d32cb7bd23cf9d05d52b3dfc83c706f927569c32ee9483bd2479
MD5 2959cd24bd1d0963fa35ea1fa3c19629
BLAKE2b-256 3b21c88abfe4fc47d6a859aae234409cbe355138ccf7ad088d3697539cff8a90

See more details on using hashes here.

Supported by

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