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, or from PyPI:

# On macOS and Linux.
$ curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
$ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
$ pip install uv

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

Project management

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 virtualenv 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.4

$ uv run ruff check
All checks passed!

See the project documentation to get started.

Tool management

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.4
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.4

See the tools documentation to get started.

Python management

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 virtualenv 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 pypy@3.11
Pinned `.python-version` to `pypy@3.11`

See the Python installation documentation to get started.

Script support

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.

A pip-compatible 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 virtualenv 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

This version

0.4.6

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.4.6.tar.gz (1.9 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.4.6-py3-none-win_amd64.whl (12.5 MB view details)

Uploaded Python 3Windows x86-64

uv-0.4.6-py3-none-win32.whl (11.3 MB view details)

Uploaded Python 3Windows x86

uv-0.4.6-py3-none-musllinux_1_1_x86_64.whl (12.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.4.6-py3-none-musllinux_1_1_ppc64le.whl (13.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ppc64le

uv-0.4.6-py3-none-musllinux_1_1_i686.whl (11.4 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.4.6-py3-none-musllinux_1_1_armv7l.whl (10.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.4.6-py3-none-manylinux_2_28_aarch64.whl (11.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.4.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.4.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (15.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.4.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (12.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.4.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (12.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.4.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (11.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.4.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (10.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.4.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (11.0 MB view details)

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

uv-0.4.6-py3-none-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.4.6-py3-none-macosx_10_12_x86_64.whl (11.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.4.6-py3-none-linux_armv6l.whl (11.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.4.6.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6.tar.gz
Algorithm Hash digest
SHA256 5c142b0082844c9eca4a303e13cf1d286622f49af70e8f922b833cb3e667b2e3
MD5 f8e535c04bc3dcaba7862dbf48805130
BLAKE2b-256 025c916bc1eacf2a5ca8cd33dc5d51cc9f64735ef6faccefd2f689d34b9eb23a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-win_amd64.whl
  • Upload date:
  • Size: 12.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 86ecd19796363f0161600120d81ce7e3d17d54cce6d25017190daa608a8ab535
MD5 17f75c4be1f53d5edcfbb049b11906bd
BLAKE2b-256 d8440231b506b5c2ea9da3242142fc7e53696060f548bb6f1cebca89268fa238

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-win32.whl
  • Upload date:
  • Size: 11.3 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-win32.whl
Algorithm Hash digest
SHA256 954f91be1b8e531e9fd3d6d549ec1638c20ce4e77dc6e272c5c5d21b8c952f11
MD5 2770db17eb78489a8eb239944b1d796d
BLAKE2b-256 b41e0b21ab16140d252d211411b4f61e2e448830f76b5cd5b88bb8dd827e5c7d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 12.0 MB
  • Tags: Python 3, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 93165aa25f5278a0844c91a367140e725d384633946705651ff8e70757c2e92f
MD5 dc3a6232cff84fb7e33aabe0e3f3b152
BLAKE2b-256 440e37f4040363d05a0cca7f35759d34bb2ca10e9d89a647b8c6c3888ed8b643

See more details on using hashes here.

File details

Details for the file uv-0.4.6-py3-none-musllinux_1_1_ppc64le.whl.

File metadata

  • Download URL: uv-0.4.6-py3-none-musllinux_1_1_ppc64le.whl
  • Upload date:
  • Size: 13.2 MB
  • Tags: Python 3, musllinux: musl 1.1+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 397e02640cbddc4230da8d614ef9a7138a024b9ce396f2a27013cd254e97480d
MD5 9555c6dc7e7c764c400ed0939d08315e
BLAKE2b-256 23475a30dd313ce2c33c3637ea17c65fcddbfbf005fc456c6025f18e99bf56e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 11.4 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 5d507dee4767d054171dcdbc1ac1fa7d15a7579e20ff988162c749f09a95f943
MD5 9ec8af751bbd3bf7d9322969f77c0085
BLAKE2b-256 a708665613bc0cb41f85afc1059b6b25815d5904020822d3a958986aa2d2eee6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-musllinux_1_1_armv7l.whl
  • Upload date:
  • Size: 10.9 MB
  • Tags: Python 3, musllinux: musl 1.1+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 346db85ce897c6c782af33504922a84c583180906244ea224a306e2393f396f4
MD5 568045b99ce0c529df2e9a48ba7dfdd2
BLAKE2b-256 728a18731ce4fae35a205efabd5f5f1979821fcb66f4d6ad6818e79b0b0bce20

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 11.1 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 081793fc66286ad0f9b939b5ab3239d20d486eff7b8f7c574d3fdcd44536595e
MD5 2365f2bb367f96110769bb108a42d2de
BLAKE2b-256 a63d32dfd30e22dca7ea76a1298d42cdda3c3e80be6763d9d87a14a5b9bbb38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8cdadb99b842494a0a39e0184cacfb4af722fdbea3d4cb5ee3b25ea0b824292
MD5 357eec193e11c6a23bd60e22b67fe6ec
BLAKE2b-256 29bb0accc6347df2f88efd092aa821eba46edebac726659a0160590989860b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 831be24db75938ebb01f9e6b7bcf24683b9661f91aab4108636207ba9dc6a2b9
MD5 354f7e827729dc8a4513e9fc20ae8579
BLAKE2b-256 13b8373d86645849320eb61e213e657084f7cf6be2d6f2b13e413cb555876659

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 2bd9879eb8ee9de0fa532136ddfe76c1b425520fa6de52f5d023567e226a08b5
MD5 aa8079fe888b78800d23887e01344b27
BLAKE2b-256 81ccf53877269f75d4bba8e4bad131b6aa2d39d6545afff2c703be2c9608ad50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 9bf486c6331197a301bff253945b233d852ed2fdc322e93c78d382092813161d
MD5 9734c0cf50f5343739ba34aa55efb8b2
BLAKE2b-256 3eb18774d2fab7cbec44e68aafa58745ce9ec2af26a17e1d6ad86284fcd79acf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4db5c2b770bb0e95a4d32dc19943109310c86103fe8b8ecf0d18dfe1a4f2a212
MD5 2fb7e0bed37224a2069d5881f7dbf21c
BLAKE2b-256 5f1146328fc827f4bf35b715a97f067a61563f5421e0e35ba6fd16b9de82771a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a66442018e09467222824b685b2d401053dfdbc3b5f6fb1f863ca2eb2560076a
MD5 77866c4f2e61ce6379b64ea9164c9943
BLAKE2b-256 3001cbe8bc23dd1e32b77b652e31757fcdb636c194bd13acf32e2438a72daf5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.4.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 86f78fb80989b524ce7da705fb5af613339a8eadbcf9e230bb16e8a7d383c2ce
MD5 38920aa6d13438e142a65746dd43fece
BLAKE2b-256 0ff31b2625aa119ee66fc7a6c3c1026c66707a5f99a0c86e5d49fd237f45f0b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 10.7 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6e925f661aeaf392cc102d3c2f6f05b6994519bd7a36578f836a4bbf42ee813
MD5 5e3956005108b11917e732d155f85b98
BLAKE2b-256 5af893e8574c91ef7884154af6f80d213ee11f7710201c2fe0d73a9f9556bd2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 11.6 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 16ae9f0a9b3bb6db755d057c4ff55b0e82fbb09243a1dce02720268718c0a11c
MD5 aab74d175e522d93ee214bd0a8737264
BLAKE2b-256 301c3c27e0fe4ad1a5b9792a61e92283457beec7949863c1b3435ef79cfad179

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.4.6-py3-none-linux_armv6l.whl
  • Upload date:
  • Size: 11.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for uv-0.4.6-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 e0360bb3b094d106d1fa00b3a15c69ccd0d1593682c33affb1b94367a248a378
MD5 7daa7dd25ec29c1b5619a32ca7e63683
BLAKE2b-256 090beb3ca96aa881e5a88e704b5d7aec99610cc0d64702c984da24ae2a5682c2

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