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

This version

0.9.8

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

Uploaded Python 3Windows ARM64

uv-0.9.8-py3-none-win_amd64.whl (21.5 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

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

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.31+ riscv64

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

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.9.8-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.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.9.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (21.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.9.8-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.8-py3-none-macosx_11_0_arm64.whl (18.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.9.8.tar.gz
Algorithm Hash digest
SHA256 99b18bfe92c33c3862b65d74677697e799763e669e0064685f405e7e27517f25
MD5 eeec6de51c8213b1672f4f99fdee5d76
BLAKE2b-256 d778291b32fdcc774b8ba4a0f4570af44af6cd34ef7385537d6521c7e3280030

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.9.8-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 bb0f8e83c2a2fc5a802e930cc8a7b71ab068180300a3f27ba38037f9fcb3d430
MD5 ed225a5aef37fc0e588b5a82d29b177c
BLAKE2b-256 95774a8f429c8d89a17a5327e7be8a7f3b72f7422b0acccfc378d424ca6dc0c9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.9.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6a01d7cd41953ffac583139b10ad1df004a67c0246a6b694eb5bcdbc8c99deaf
MD5 a326b31e18a3be77cf169a17d3bb908e
BLAKE2b-256 6cb69a2ed2c1cc86b967de82c20aeee2860f8771adbcf010061359f5406a6bed

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.9.8-py3-none-win32.whl
Algorithm Hash digest
SHA256 0f03bc413c933dbf850ad0dc2dba3df6b80c860a5c65cd767add49da19dadef0
MD5 6dbfd352d6262ab88fbcc41183dbdb4b
BLAKE2b-256 96a48bb8dca265df52abc405161f918225fbf156fc3a16f380a382a5cd52f992

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 87c3b65b6d5fcbdeab199d54c74fbf75de19cb534a690c936c5616478a038576
MD5 d10035a83de3b57e552b795061b4a8c2
BLAKE2b-256 64436045bb0b69c788620df4750de57319f56a9b5bd02eef56f28af0de25c117

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 cdbfadca9522422ab9820f5ada071c9c5c869bcd6fee719d20d91d5ec85b2a7d
MD5 d8b33684874c32a51a14e52eaf275f2f
BLAKE2b-256 d7b48c3d7afdc87ef07b51b87646a4c75ee5209b7f9f99a33d54746b7ee0f157

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 5af28f1645eb3c50fd34a78508792db2d0799816f4eb5f55e1e6e2c724dfb125
MD5 ae57548b81fa4914f25dfcc80a8a9bd0
BLAKE2b-256 b235003035bc2da31cc9925a62b1510a821d701c117cf0327ab0a1df5c83db34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 f52c6a99197028a314d4c1825f7ccb696eb9a88b822d2e2f17046266c75e543e
MD5 a35a994e227682ca4d8925c09fa8d64f
BLAKE2b-256 5de432b74e9246e71f27b8710ba44be6bfd8bdcf552dce211cecd4d1061705cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 40253d00c1e900a0a61b132b1e0dd4aa83575cfd5302d3671899b6de29b1ef67
MD5 76a261e05176f493531a8b0e6dad7b4a
BLAKE2b-256 35985b8fad804d17e76a2861c932009b0d34c7d5e3517923a808b168c2d92f2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14670bf55ecb5cfd0f3654fbf51c58a21dec3ad8ab531079b3ed8599271dc77b
MD5 e8002a9b0ec2fe39b154ed75c12eda7f
BLAKE2b-256 906607e7067ace0886212217380b6e809f7dd1fed3d35c34be8d02124a656b17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 75671150d6eb9d5ee829e1fdb8cf86b8e44a66d27cbb996fe807e986c4107b5d
MD5 c70c492e56ee702512fce321cbc3b609
BLAKE2b-256 336c2dbda528a2cd7a87a7363e8a9aad3033bff12c8b071a5e462eb852e704fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a4010b3fdabbb3c4f2cf2f7aa3bf6002d00049dcbc54ce0ee5ada32a933b2290
MD5 f92955456baf1b8abf7e75cdf12a9ac3
BLAKE2b-256 9480ec48165c76f863bbfcb0721aa1543cd3e7209c0cb8fdf89fe3d4e16694e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 1b8b5bdcda3e10ea70b618d0609acddc5c725cb58d4caf933030ddedd7c2e98f
MD5 ed6524222881231b372f0918f6c57822
BLAKE2b-256 72c646b9fe190e6fafb6bf04d870ccfd547e69aa79d0448a5c2c5799f1c0850e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 543693def38fa41b9706aba391111fe8d9dd6be86899d76f9581faf045ac1cb6
MD5 d391f562d11031fae7208f2d84f33c10
BLAKE2b-256 f7292923cd822b9a1dc9b99513a00d2102c7ef979ac3001e9541e72a1e7fca07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6df2e16f6df32018047c60bab2c0284868ad5c309addba9183ea2eeb71746bf0
MD5 32412a6a2e21b493f1da42b1430485d0
BLAKE2b-256 72d22539fe7ecf03f5fa3dfcc4c39f59ade412bd1b8e89c9ae026b5a2d7da3dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 50d130c46d97d7f10675ebea8608b7b4722c84b5745cd1bb0c8ae6d7984c05d5
MD5 f5c06af9a9ee2ce2dcceae8533d57091
BLAKE2b-256 8ded7aa302fac3d6c880df6bdbba3fb6b4d8cded023b1398f99576dcb103051a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f2f3576c4518ff4f15e48dbca70585a513523c4738bc8cc2e48b20fd1190ce3
MD5 3f56340363812357b5c95703b988f211
BLAKE2b-256 da377716dd87189a6b062502ea41650eccd2473b6ee54b37cdf6e90a3b1aaa17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7038a552159f2291dd0d1f4f66a36261b5f3ed5fcd92e2869186f8e910b2c935
MD5 5bbae41f9919eb566519431f3b46c83f
BLAKE2b-256 e6763ffedb2ba3adf71719996cb4c2660a333d2267503823a02e184a839e1d4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.9.8-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 d93a2227d23e81ab3a16c30363559afc483e8aca40ea9343b3f326a9a41718c9
MD5 ae8ba19ce922f2fe54f9e24b40010fa5
BLAKE2b-256 115d4db5a4e72f70e15491ca33289092cd127d1220861bc647ebf743ea844cd7

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