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

Uploaded Source

Built Distributions

uv-0.7.13-py3-none-win_arm64.whl (17.5 MB view details)

Uploaded Python 3Windows ARM64

uv-0.7.13-py3-none-win_amd64.whl (18.8 MB view details)

Uploaded Python 3Windows x86-64

uv-0.7.13-py3-none-win32.whl (17.3 MB view details)

Uploaded Python 3Windows x86

uv-0.7.13-py3-none-musllinux_1_1_x86_64.whl (17.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.7.13-py3-none-musllinux_1_1_i686.whl (17.1 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.7.13-py3-none-musllinux_1_1_armv7l.whl (16.8 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.7.13-py3-none-manylinux_2_28_aarch64.whl (16.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.7.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.7.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.7.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (18.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.7.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (18.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.7.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (17.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.7.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (16.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.7.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (16.4 MB view details)

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

uv-0.7.13-py3-none-macosx_11_0_arm64.whl (15.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.7.13-py3-none-macosx_10_12_x86_64.whl (17.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.7.13-py3-none-linux_armv6l.whl (17.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.7.13.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for uv-0.7.13.tar.gz
Algorithm Hash digest
SHA256 05f3c03c4ea55d294f3da725b6c2c2ff544754c18552da7594def4ec3889dcfb
MD5 35220cdd796cd64e9a083ed3be7f01bb
BLAKE2b-256 0f081bcafa9077965de397d927f291827a77a915d75567b42c3ad6bb6a2e0bcd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.7.13-py3-none-win_arm64.whl
  • Upload date:
  • Size: 17.5 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for uv-0.7.13-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 e077dcac19e564cae8b4223b7807c2f617a59938f8142ca77fc6348ae9c6d0aa
MD5 b5821bf65ed0d14d336a4cc31ce37152
BLAKE2b-256 4bac68fd18d5190515f9ddb31cc2f14e21d1b38bee721ece2d43c42e13646fa3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.7.13-py3-none-win_amd64.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for uv-0.7.13-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8c0c29a2089ff9011d6c3abccd272f3ee6d0e166dae9e5232099fd83d26104d9
MD5 51218a50084911b1da012ac40ae39500
BLAKE2b-256 af05c16e2b9369d440e3c85439257bd679c3a92bdd248015238a8848941828f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.7.13-py3-none-win32.whl
  • Upload date:
  • Size: 17.3 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for uv-0.7.13-py3-none-win32.whl
Algorithm Hash digest
SHA256 b1af81e57d098b21b28f42ec756f0e26dce2341d59ba4e4f11759bc3ca2c0a99
MD5 fe56f8ed1fc523eda44d9dbe75d8c48e
BLAKE2b-256 ce6fee435b4ec3903617b5f592c0077ef0c1e22c41e2ab872be2134b223aabb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4efa555b217e15767f0691a51d435f7bb2b0bf473fdfd59f173aeda8a93b8d17
MD5 660deb82fb49edef10e8a1f803690590
BLAKE2b-256 11c10f09c0de0896d04b4bb81bdd7833643f055e8a5c2c04f8a2ddf3a74453d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 527a12d0c2f4d15f72b275b6f4561ae92af76dd59b4624796fddd45867f13c33
MD5 5b9e3df62112b24db989de23f8aeebaa
BLAKE2b-256 946a36f055eb1b9a44d60eed9a5aa93cf0f23660a19ab07a5ef085331dd9fc0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 866cad0d04a7de1aaa3c5cbef203f9d3feef9655972dcccc3283d60122db743b
MD5 59c39ce9f83223192cbbd930758a031d
BLAKE2b-256 b4e827294e3067295db8f54dbe8a1f64b6e3000adc1cba29f953c440bc184a5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1afdbfcabc3425b383141ba42d413841c0a48b9ee0f4da65459313275e3cea84
MD5 4b28f489e90364b2f3545c446f6675e5
BLAKE2b-256 346dd7a1af8ece6d5cac5287d00e15b9650eb9d3203606add4cd035009d52de6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5786a29e286f2cc3cbda13a357fd9a4dd5bf1d7448a9d3d842b26b4f784a3a86
MD5 ea62b8a1e61f84caffbf874b1da129cd
BLAKE2b-256 d8eff2e96cec5e4cf65d7fde89b5dcf9540ddacf42e8e39de2fa0332614e55a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 33837aca7bdf02d47554d5d44f9e71756ee17c97073b07b4afead25309855bc7
MD5 2099fd51f86809ca44a8cbf9803b7fd9
BLAKE2b-256 9cb2f4381c1aa4d3d13ff36359e4176cd34d1da1548ba2a6c763a953b282ede0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a51006c7574e819308d92a3452b22d5bd45ef8593a4983b5856aa7cb8220885f
MD5 9649a3d539334e30b9f4966a402fcf6a
BLAKE2b-256 9d62a2f4147fa2714ce765104e2984abcdaa0605725b10ca70bee7de4a1ba88c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 9d2952a1e74c7027347c74cee1cb2be09121a5290db38498b8b17ff585f73748
MD5 9e1bf2c51688a62b230e9e143e673902
BLAKE2b-256 0973e9c14c6aba0316da7fe30b0dac4f8f6d1155d0422dcff1138b85f4eb4c08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f28e70baadfebe71dcc2d9505059b988d75e903fc62258b102eb87dc4b6994a3
MD5 0d84f6bd8438569f7293af404841d531
BLAKE2b-256 74fe8b4de3addc375ba00bd1a515a79aaccbb3a600bc66c03e5fd159d6928066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 721b058064150fc1c6d88e277af093d1b4f8bb7a59546fe9969d9ff7dbe3f6fd
MD5 17566464f19765bb0f99fc1d0c1a7b2d
BLAKE2b-256 642492a30049a74bf17c9c4ffbf36462c5ff593617c2d0b78efb3c9d55293746

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 88fcf2bfbb53309531a850af50d2ea75874099b19d4159625d0b4f88c53494b9
MD5 649bef2540e088cd1f536d099403ae36
BLAKE2b-256 d85b81ea6ec50890a064b37d8f8dc097901768f73c747d965ffd96f1ebdfacea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f828174e15a557d3bc0f809de76135c3b66bcbf524657f8ced9d22fc978b89c
MD5 f249fc530239040e35814c0e2418d3f7
BLAKE2b-256 46c71d7ec2211732512ae43d7176242fea3eea1915c83565953014bbafcb6be2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c457a84cfbe2019ba301e14edd3e1c950472abd0b87fc77622ab3fc475ba012
MD5 cfce263150a349500ca4b8dc2e709f11
BLAKE2b-256 6b8f27217e8a7a457bc9c068d99f2d860706649130755fa377306d75a326ce0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.13-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 59915aec9fd2b845708a76ddc6c0639cfc99b6e2811854ea2425ee7552aff0e9
MD5 a3ad19aeb6aff5ae18b1b12684a22853
BLAKE2b-256 e94ecdf97c831be960e13c7db28b6ba226e5bdbfee9a38f6099687c7a395ec52

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