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.

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.6.13.tar.gz (3.1 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.6.13-py3-none-win_arm64.whl (16.3 MB view details)

Uploaded Python 3Windows ARM64

uv-0.6.13-py3-none-win_amd64.whl (17.6 MB view details)

Uploaded Python 3Windows x86-64

uv-0.6.13-py3-none-win32.whl (16.1 MB view details)

Uploaded Python 3Windows x86

uv-0.6.13-py3-none-musllinux_1_1_x86_64.whl (17.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.6.13-py3-none-musllinux_1_1_i686.whl (16.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.6.13-py3-none-musllinux_1_1_armv7l.whl (15.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.6.13-py3-none-manylinux_2_28_aarch64.whl (15.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.6.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.6.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.6.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (17.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.6.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (17.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.6.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (16.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.6.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (15.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.6.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (15.5 MB view details)

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

uv-0.6.13-py3-none-macosx_11_0_arm64.whl (15.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.6.13-py3-none-macosx_10_12_x86_64.whl (16.2 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.6.13-py3-none-linux_armv6l.whl (16.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.6.13.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.6.12

File hashes

Hashes for uv-0.6.13.tar.gz
Algorithm Hash digest
SHA256 2bfa717647b546c1b1548a1217cf1f0162d9eb9f385ec5df48d9479ff62c4c91
MD5 9eeaf7ef685f3e37a8e5d879e3954fc2
BLAKE2b-256 694a657ac37f3f1707d320e993a64c30fd261af39b4dd6811f2e96e61514129c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.13-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 393072d201e3aeacc952a6b0ffea8072f924f3deea67dcb5117ecc7b1ed74f5b
MD5 84a9cf27090f680586b9db7289244449
BLAKE2b-256 7633423bf6556a2622d333c4002dee3e4ddae8f64f9cebc9c8dd9655467f4442

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.13-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0fefc48b668d2a03c692e6925691e5e9c606f609ddd90bac8e8c4db2b42179e0
MD5 aaa70a0f3786d63ce47164914b8db486
BLAKE2b-256 214cee21b8efbe81f346133b64bcb02f652ee1b6c326d3fd3a1a651ccf069219

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.13-py3-none-win32.whl
Algorithm Hash digest
SHA256 fbbe2c41d5ec103848a61143bb3e4c3453192ae422a3e687dc43ab09b870e072
MD5 9e9df501b0000c242c358aad76766a43
BLAKE2b-256 43865de7e2dc054b7fc9a29f21f42d97e8226ab4675cc2b7dd0a0e620cee189a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c2e1b23d9110a8cb0b9d0dddaaa20fda736ed24b3cdcdba2d7fc2ddd9159207a
MD5 90b12c18a094132c08a49e83ba050fc0
BLAKE2b-256 af0b4eb49e40155ec0a7f5bfb6e3bccdae2985bbc85cd71f463e7c58e1155a63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 b3476cb2298fe109c02e9c768130a97b0c9c49322bc9bf3145433c8f43a90883
MD5 7f1a371016b88218db48495877577f79
BLAKE2b-256 958d147e6432675defe0c64996ea411510a5c9dcf9fedef1350dbc952770adec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 eab97a6116e767c72cb5d42792e75f1c9a30fc4557ddf24fb48584d1de9f3e16
MD5 1569d17a9aab9d2e6c0873f745070499
BLAKE2b-256 db01d7b81016fb7dc9811e133780a13147a3880b8d0c746070c777966e74e4ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 83d3760b34b7c775c5a3e7541dada253a26a1a3dc48a1d88a51b061f6f424644
MD5 62bc5852226993fce2590809a6af6edd
BLAKE2b-256 b404b8c9bae00cbe124c4ed4663c4ded32d15b1972484d8ab5bb649b9d8cd700

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbf2190b1bd9df9dafdd5646d1f29f7d7d45e87e21f95ccf8e698b16b26de106
MD5 7db00cea888767b84229b02a77e433a1
BLAKE2b-256 c4f39e7f4895931b9ac1a362b76faa8cab89cc4a7ffa97a4dcc91b4d1e655b09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f9c459147c743fd8c3a114150de03334540e5d2d58bb8d046de601a1984d9f9a
MD5 37f2dfebba62a45ce54cb168b3305726
BLAKE2b-256 bbb8dbc8883f6e958429e61a9b4d5bf64bbd82340ceb62d9f244f556c09202be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e5a251a073c91767952363ea99d0b831166f6bb1866de1f524abfc40b6de7747
MD5 77e4bbf3a2e6967400a9595647c44da2
BLAKE2b-256 91d6128114ccad859edbaf9446bbe2126c3ca35ac720c5741f8c393495a956c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 2cd489d2bdcdf8ab94057d2bdbadeeeca40334da4c847b66f561ed49afc75ac9
MD5 8201117018c17e0fd1d9fde5d54e319d
BLAKE2b-256 a416f16e2e1fc3c418ae7e79111de16fe22ce536b6b0832301a9e78df6aa24d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 422f3aa2e121b091d0ae3b4833ec552de7ef18077a04b804d1393b59cde3cb50
MD5 94865277d9d9111b4795aad0c1826dee
BLAKE2b-256 2bab2a52f2520c0cbc72e234e4b71deec6485466543a292daa24cd2eec3647fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2feaa4df5fb0f74bd1b7f7595659a9a9a889a5c6c77e0a63a243d4abc2eacae7
MD5 7dda9e9be294f9b89a45e768996b5325
BLAKE2b-256 d4e2a9c472ac25177fd24581682fe4363513df3844768130c17b41d21e849727

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f1d3d827f65a45223380e463b978d56d86ad01b8306f198a5d0ff7427ab45e04
MD5 a4d8fb061c92a61319a07c973ee556ec
BLAKE2b-256 b7b2a56b5c30a35b6cc09da9a616e2d46bca8b0e06c84996ee5e32c27b0587b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87800f3624a0c24b893bdbefde5bd46a27e72b8b3c5b009213e0f8060c36e414
MD5 776dd8f4e890b691739fd5b99261c851
BLAKE2b-256 0239b5e25bd80a76a7129102015db8dfaed212a7659a23384341e8db13f9fbfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6d27daafbfe2c608a9ad8e229e4ff68cc05cabe1fb326c3c9f2bf82dba4a325c
MD5 97ac9f5707cdfa982827d9b843df2c61
BLAKE2b-256 0d7ccca11b36d5dc32d9cdd73f8735c7733b384266637807c353c9f26d0ffe7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.13-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 efa468a3c996a35f5107a8a314ea9d5ec7b33a78e253973c4840408d5ed5d852
MD5 1fc748f078a4b2aa9d0cccd397cbe992
BLAKE2b-256 92a3a659da098f123ee5b4e77c062363e75a0056a5bd16e72b2937fe988a0d24

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