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

Uploaded Source

Built Distributions

uv-0.6.14-py3-none-win_arm64.whl (16.4 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

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

Uploaded Python 3 musllinux: musl 1.1+ x86-64

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

Uploaded Python 3 musllinux: musl 1.1+ i686

uv-0.6.14-py3-none-musllinux_1_1_armv7l.whl (16.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

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

Uploaded Python 3 manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3 manylinux: glibc 2.17+ s390x

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

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

uv-0.6.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (17.5 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64

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

Uploaded Python 3 manylinux: glibc 2.17+ i686

uv-0.6.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (16.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

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

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

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

Uploaded Python 3 macOS 11.0+ ARM64

uv-0.6.14-py3-none-macosx_10_12_x86_64.whl (16.3 MB view details)

Uploaded Python 3 macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.14.tar.gz
Algorithm Hash digest
SHA256 a117466f307d164a74444949cc94ec4328ec880fb489cbaa7df324dab14c5c98
MD5 9f02c3f4a8d900646c8c75e5237058d1
BLAKE2b-256 e5eb07bc000a3c05372448b63c45da98630c532ec4e059d848488c3e774d017a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.14-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7465081b4d0b213d0055ccb48de7fe546b5cf0853c6d3601115760760634f6d8
MD5 92222b2088e8b80533f1ddebd41a9933
BLAKE2b-256 7709163062d439ddc0d89e527ae0e631abf1f7781b183442d8823c48af368f5d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.14-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 012f46bef6909209c4a6749e4019eb755ba762d37d7ceaaf76da9cb4b7f771e9
MD5 27f6a1c02eeefc5742f045326c5eef5b
BLAKE2b-256 401733c5c1503c35c874932d4a21ec10a55051e3695dba12b7de700bcfad0cca

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.14-py3-none-win32.whl
Algorithm Hash digest
SHA256 7cdf3c8d927b07d4eaffc44809eb57523d449705f10dabbdd6f34f7bdfc7d5fe
MD5 a70883c1160e962986845c1a99881f36
BLAKE2b-256 d8fe087d5193603e16bc5f67556d94cf8fa8634785c5863cccdec825f14e9a4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2d534e7dc1299c8b53eb7b4c7575e4f0933673ea8b1275d3f3022f5670e311db
MD5 183ce296a0ad44201eb480fa12584900
BLAKE2b-256 dfeb38bc37856691d53008bf094d03d9e7ab0c2927523a3901c83e152e7c9915

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 955e36c98a438a249e178988d4f13b1bb831eb57264d73c459f171b5afd7b023
MD5 706bc10f55f34ba161361d89b4ac43b2
BLAKE2b-256 3f53c92c894cb34e9578c2e6dc195bcd4eb0a140dd57c96a60207d847521a902

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 bf1ec103cf9a0850f03935dc6a93cacc680fa2c90c3b41cfc10da311afab8f5b
MD5 3b755b035706cc04d387b8876efe37a3
BLAKE2b-256 0bb3efcbd3a2d298801109b24feee655bb80fe4178aa6bf68e49664c48b342b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11779beb3bd1f92814bc8d8cd350d5228e8f9198cca2f52138b53030a4061d93
MD5 35d1eb8e28b18d6e250d4a91e90ada5f
BLAKE2b-256 6c9a7c84650ae9fb801ecc848d49dcba201243989d9234fe3ec4a4e935ff21c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36aaeb00a70a10f748e16c7a1fc410862e2ba905806e7e9dfbc3e64596309404
MD5 ce2c617b877a11c0e5d9a3c06dfa1a29
BLAKE2b-256 ebfd21a82b78173be1a2ea20f4f55154e7252bd80d21ed60b9bbbc0e2047b8d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6d433925db6e2ef46047b68962d136ff2ef17a7b5609168615f19e60674232c9
MD5 ab68f3aa2bbda352e6c4bb2f5e2e8384
BLAKE2b-256 2a3a0da9780868626466d8c4977fb02d1b0daa80e6f7504d7b662cae3fb4af3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 998b67bb1cebbe044fc2c5cb251c29cffc56f62a6d55719d6f4e960461d6edad
MD5 9fc7669ee2b29a0b3f02af3a3ae19e70
BLAKE2b-256 a5700806268440651e2ad1b3542af42b800e20bb7e43050a9ca78f3d1eb4c660

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 fe9b4361b1c8055301b715fdd94d94eb512053dc4545fec40d3fe3657f655987
MD5 f0b860fd3bff7e9ca983e39a2e1f7500
BLAKE2b-256 7af68a1245530c282d470909db78cf56831693c58b90d9b819e35aa2d85fbbe8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ed41877b679e0a1af9ab65427d829b87a81b499017e59c70756d4ba02ca43fcb
MD5 de3db6101e4c8376d378a5c5698adb1b
BLAKE2b-256 1f44c3ad856473f2ef5f22c865a73a0a37ee82d11fcca78ae82f5ac895a7023a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d6ca3f99c1a6c1c430ae8f451133fb4e8c3a22f661c257425402a5d9430bb797
MD5 4f90410e04717d3217fc6ba4f362a376
BLAKE2b-256 fd475aeb7fb80c673bc28ccf3ab99e376b1cd92eac41af6b9b48c0e38b114c54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 2fb2cd7f6aae21b81474b0051d30e7ed939a9a71714948c47f58b0e7acdd2a80
MD5 367c51cdab11ee3851c6d8ad2a916f71
BLAKE2b-256 201e72ac3d1e0805d3b49b0a4de46483489ea1989827440f42b0cfb444cdc67f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fc8fe58871b4fe02a863b05b8b1b25ef1b6c60d4d224e85338f5c2be0ab4f0e
MD5 d996e779748dd721177f266d522ef968
BLAKE2b-256 7289e7fc8a047f08234cc26d1e37e5f573887744205d087f8e8e6f3d0feb04ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2578f6f8cdbcc036ffad1043f9f66ade3ac0babf29def6abd9eefd4a7c6621cb
MD5 129a8729830a79b46f5de3e42443098d
BLAKE2b-256 24b2111e1ea40453d93c849f36a67397b51d9b458e6e598c3629ffe76d11b490

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.14-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 c775e5d7a80ff43cb88856bbdcd838918d5ac3dc362414317e6bbaeb615fff98
MD5 c459959db2e8f7aa02ccd4ce8f92ff70
BLAKE2b-256 6bbf3e87dec7728b249458967f39a301376cb776e559c90261c1dac963686dc3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page