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

Uploaded Source

Built Distributions

uv-0.8.4-py3-none-win_arm64.whl (18.3 MB view details)

Uploaded Python 3Windows ARM64

uv-0.8.4-py3-none-win_amd64.whl (19.7 MB view details)

Uploaded Python 3Windows x86-64

uv-0.8.4-py3-none-win32.whl (17.9 MB view details)

Uploaded Python 3Windows x86

uv-0.8.4-py3-none-musllinux_1_1_x86_64.whl (19.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.8.4-py3-none-musllinux_1_1_i686.whl (18.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.8.4-py3-none-musllinux_1_1_armv7l.whl (17.7 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.8.4-py3-none-manylinux_2_31_riscv64.whl (18.6 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

uv-0.8.4-py3-none-manylinux_2_28_aarch64.whl (17.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (19.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (19.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (18.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (17.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (17.5 MB view details)

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

uv-0.8.4-py3-none-macosx_11_0_arm64.whl (16.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.8.4-py3-none-macosx_10_12_x86_64.whl (18.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.8.4-py3-none-linux_armv6l.whl (18.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.8.4.tar.gz
  • Upload date:
  • Size: 3.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.3

File hashes

Hashes for uv-0.8.4.tar.gz
Algorithm Hash digest
SHA256 2ab21c32a28dbe434c9074f899ed8084955f7b09ac5e7ffac548d3454f77516f
MD5 ec9142e351582a0a9b681788a90e8a8f
BLAKE2b-256 7105779581d8e5cd8d12dc3e2297280a03293f7b465bb5f53308479e508c5c44

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 41f3a22550811bf7a0980b3d4dfce09e2c93aec7c42c92313ae3d3d0b97e1054
MD5 142203a87ef21355ae7aef6f11180adb
BLAKE2b-256 58de196e862af4c3b2ff8cb4a7a3ad38ecf0306fa87d03ec9275f16e2f5dc416

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ad056c8f6568d9f495e402753e79a092f28d513e6b5146d1c8dc2bdea668adb1
MD5 ce1695f7c92bbe4045caf08282aa8b58
BLAKE2b-256 768e2d6f5bce0f41074122caed1672f90f7ed5df2bd9827c8723c73a657bea7b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 b83cd9eeb4c63ab69c6e8d0e26e57b5a9a8b1dca4015f4ddf088ed4a234e7018
MD5 b41bc5ef1fab2fa195237daa4afec90b
BLAKE2b-256 3cfa58c416c634253bdd7ec50baa5d79010f887453425a62e6a23f9668a75305

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cad63a02a735ba591679d713376767fc7649ad1e7097a95d0d267a68c2e803fc
MD5 902cf7cc2114cf817a883697cb78d8d5
BLAKE2b-256 510f9e5ff7d73846d8c924a5ef262dee247b453b7b2bd2ba5db1a819c72bd176

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.8.4-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 18.0 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.3

File hashes

Hashes for uv-0.8.4-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 b90eb86019ff92922dea54b8772074909ce7ab3359b2e8f8f3fe4d0658d3a898
MD5 21ee3a7d545c85d288d6f3d115405107
BLAKE2b-256 00f4358576eea98eb4ba58135690a60f8052dbd8b50173a5c0e93e59c8797c2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 2c80470d7253bd26c5990f4914cfddc68a6bb4da7c7da316a29e99feafe272a1
MD5 4a320215f099abb90895ff94f406117d
BLAKE2b-256 8a199f9df99259d6725fc269d5394606919f32c3e0d21f486277c040cb7c5dad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 9f2a7042553e85c66884a6a3c1b88e116bc5fe5e5d1c9b62f025b1de41534734
MD5 45c5bf17fefaa9dae775169d3e1acbd4
BLAKE2b-256 e68f20dcb6aaa9c9d7e16320b5143b1fdaa5fd1ebc42a99e2d5f4283aafc59f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6fa3754a2b965dceecfce8c38cacf7cd6b76a2787b9e189cf33acdb64a7472a
MD5 4de68fe606f72b8821b48b183fa7e198
BLAKE2b-256 1cb1773dcd5ef4947a5bd7c183f1cc8afb9e761488ff1b48b46cb0d95bc5c8cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9cd287982f62419f98ca7182fbbc2fd0fad1a04008b956a88eb85ce1d522611
MD5 ac2a2eb696dfd5aeb9faa5709da6cede
BLAKE2b-256 42e25cf11c85fb48276b49979ea06e92c1e95524e1e4c5bccbd591a334c8de68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 624cf5b7bdc5cc0253115fefaad40008205d4acf34b77b294479dfe4eacb9697
MD5 7d1db384f0c1bc3758acf6035be34ca7
BLAKE2b-256 80ca48c78393cb3a73940e768b74f74c30ca7719de6f83457a125b9cfa0c37e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 86d64c66993eb0d9821caea27920175a27cd24df1eba8a340d8b3ae4074fac77
MD5 224718033887f73c4d0caa1557919194
BLAKE2b-256 f5f0d01779df4ac2ae39bf440c97f53346f1b9eef17cc84a45ed66206e348650

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 b2230310ca303328c9fd351044fb81349f3ccfaa2863f135d37bfcee707adfd1
MD5 f359f7d0b5ce6d3b0060924afec96405
BLAKE2b-256 abf6b5fc5fe6e93e0294cbd8ba228d10b12e46a5e27b143565e868da758e0209

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 385dec5a0c0909d5a24af5b02db24b49b025cbed59c6225e4c794ff40069d9aa
MD5 1b7b33de8b22baaa070030cc1d1b07cd
BLAKE2b-256 f2e3190eb0ca91b8a0e5f80f93aeb7924b12be89656066170d6e1244e90c5e80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 96d7a68c360383d638c283811d57558fbf7b5f769ff4bdbc99ee2a3bf9a6e574
MD5 7bf44807a1c16e52a704ef837676224b
BLAKE2b-256 59f89366ceeb63f9dd6aa11375047762c1033d36521722e748b65a24e435f459

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c2323e915ae562db4ebcdf5e20d3dd37a14959d07cc54939d86ab0dcdbf08f58
MD5 6ad50073178ef742f9241f1a6cd6c863
BLAKE2b-256 e38ff703e4ba41aae195d4958b701c2ee6cdbbbb8cdccb082845d6abfe834cf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 edc813645348665a3b4716a7d5e961cf7c8d1d3bfb9d907a4f18cf87c712a430
MD5 e16d75fc5e173aa86d5909a82b8b55c1
BLAKE2b-256 16397d4b68132868c550ae97c3b2c348c55db47a987dff05ab0e5f577bf0e197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4d8422b3058998d87fee46d4d1a437e202407cafca8b8ac69e01c6479fbe0271
MD5 736774d47f2d5140cd72b949ff294f7d
BLAKE2b-256 36fa7847373d214de987e96ef6b820a4ed2fa5e1c392ecc73cd53e94013d6074

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.4-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 f9a5da616ca0d2bbe79367db9cf339cbaf1affee5d6b130a3be2779a917c14fa
MD5 162fb5209a413fdc06b884eefb04d9d4
BLAKE2b-256 96104d52b081defca3cfb4a11d6af3af4314fe7f289ba19e40d6cfab778f9257

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