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

Uploaded Source

Built Distributions

uv-0.7.19-py3-none-win_arm64.whl (17.9 MB view details)

Uploaded Python 3Windows ARM64

uv-0.7.19-py3-none-win_amd64.whl (19.3 MB view details)

Uploaded Python 3Windows x86-64

uv-0.7.19-py3-none-win32.whl (17.6 MB view details)

Uploaded Python 3Windows x86

uv-0.7.19-py3-none-musllinux_1_1_x86_64.whl (18.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.7.19-py3-none-musllinux_1_1_i686.whl (17.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.7.19-py3-none-musllinux_1_1_armv7l.whl (17.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.7.19-py3-none-manylinux_2_28_aarch64.whl (17.2 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.7.19-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.7.19-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.7.19-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (19.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.7.19-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (19.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.7.19-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (18.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.7.19-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (17.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.7.19-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (16.9 MB view details)

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

uv-0.7.19-py3-none-macosx_11_0_arm64.whl (16.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.7.19-py3-none-macosx_10_12_x86_64.whl (17.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.7.19-py3-none-linux_armv6l.whl (17.6 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.19.tar.gz
Algorithm Hash digest
SHA256 c99b4ee986d2ca3a597dfe91baeb86ce5ccc7cd4292a9f5eb108d1ae45ec2705
MD5 bc95882229ed9601ade55e748d81a9ec
BLAKE2b-256 695250f8be2cc8c9dc89319e9cbc72656a676742ab59c2d9f78e5bf94898f960

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.19-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 729befc8b4d05b9a86192af09228472c058c9ec071dd42d84190f10507b7c6e0
MD5 b57f79157979236500c59b0af6ecac0a
BLAKE2b-256 e95059b4141026491b625110161fcc0e383b4eb9a81937d4608c614ab990a789

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.19-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b971035a69bf1c28424896894c181d8b65624f43b95858a3b34a33dba04a5a2a
MD5 1c22967d35dfb836df80693f7219b967
BLAKE2b-256 f0d79658133273c393bdf5127b87b00abeec04f90bc0e2004d4ea180502f24e8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.19-py3-none-win32.whl
Algorithm Hash digest
SHA256 e59efa9b0449b49acca0ca817666cc2d4a03bd619c77867bea57b133f224e5f3
MD5 e5038da086ffe4a8cf7c5b87b80d9edf
BLAKE2b-256 7328690c02e4f63a6fb46cc9f5670a6e208dd6fef1b33f328e0916738f5ddc2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cb6c0d61294af5b6cabd6831aa795abf3134f96736a973c046acc9f5a3501f0d
MD5 8b59041c0ff9affdf97765058275e78d
BLAKE2b-256 46f8280823b29ca2a19fcdb728b46ef27f969c5b8a2dc952e556d67c7c6f9293

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 e6bffad5d26a2c23ccd5a544ac3fd285427b1f8704cf7b3fdc8ec7954a7f6cad
MD5 7cd476d4c81125850141d0b2f220fd37
BLAKE2b-256 a45e214d127a4c323e031998b81b7a144c2c72c4056fcc25117515799962b0ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 987059dee02b8e455829f5844dbcbe202cdedf04108942382dadcc29fa140d6a
MD5 ceb03f361aa36a77229b3801604541aa
BLAKE2b-256 de1575d8cf9f809e911a1492bad3988f3aa29319ac2b312d48fea017c48006a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 52b7d64a97b18196cccbbbd8036ad649a72b7b1a7fd4b22297219c55a733127c
MD5 c0c3075ade3ec95df24a78f573f46f15
BLAKE2b-256 7b12f51c559e4bcf6065fc43491cff1780108a207eca13511ffcd73a5c8dbf8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5dee2c73fe29e8f119ac074ebb3b2aa4390272e5ab3a5f00f75ca16caf120d64
MD5 4b1566db7e1f47bb179a860373e7f350
BLAKE2b-256 2a5ebd0594f69dcdc633ffafd500538f137169a8b588f628a4f6abd5dc198426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4cb6fa07564d04e751dac1f0a0a641b9795838e8c98b6389135690b61a20753c
MD5 f0abfbcbee9c31f3254db75f2506288c
BLAKE2b-256 04d06093c3818eaf485de85c821f440191a7fd45ce56297493fb6e01baf5fdf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a83416ca351aea36155ec07fce6ac9513e043389646a45a1ad567a532ef101dd
MD5 b0362e2ab423c7592fd00b01388686eb
BLAKE2b-256 91a956bd9de82f2d66db246506196546a8346653e03b118c5488054e7f3fa9f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 7e1fff9b4552b532264cb3dd39f802aa98cb974a490714cef71ab848269b7e41
MD5 b8825e725d136359059795b40e141175
BLAKE2b-256 04fef983fc90d98bfb2941d58b35a59a7411f6632e719883431786aa18bad5f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8546bbb5b852a249bb8b4e895eaa1e8ea9de3a0e26954a0413aa402e388868f5
MD5 fa8f0e9ddb37a15a3a76aa064d58dfc7
BLAKE2b-256 460125f78f929d457178fad8f167048d012bbdf4dd4e74372e54fbafa5fccd7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 576bf4d53385c89e049662c358e8582e7f728af1e55f5eca95d496188cf5a406
MD5 bdd6fa0ea74249eba290ea808d3254fe
BLAKE2b-256 d7d57dc3382c732aa42257ab03738a5595d3b15890ffcce1972c86dd6845c673

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 692f6e80b4d98b2fbf93b1a17ed00b60ac058b04507e8f32d6fc5205eb2934c7
MD5 325814fa9917e65e66212a169706bc5e
BLAKE2b-256 19b5ec4dd36640f2019b0c4cbec7ca182509289d988ba2e8587ca627e0c016b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f303b80d840298f668ce6a3157e2b0b58402fd4e293a478278234efde8724e75
MD5 5ed6a5441f42674661f9feb43aefea11
BLAKE2b-256 8c594ba64e727b5b570e07e04671c70eda334e91c8375aa2d38cdfda24a64fa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9bd596055c178d5022de4d3c5a3d02a982ad747be83b270893ac3d97d4ab4358
MD5 ab466f79e6b0749491efad384f42ec4c
BLAKE2b-256 9651a260f73b615ea6953128182c5e03473e6a3321d047af1aa7acba496f7b2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.19-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 9b1b8908c47509526b6531c4d350c84b0e03a0923a2cb405c3cc53fbc73b1d3e
MD5 194ab1b7080908ca5013af3ad244d4fd
BLAKE2b-256 a6f441d97a3345aebb94ba84d53c7eaef72d5436aac6c89f73956b87604eb1e1

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