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

Uploaded Source

Built Distributions

uv-0.7.2-py3-none-win_arm64.whl (16.9 MB view details)

Uploaded Python 3 Windows ARM64

uv-0.7.2-py3-none-win_amd64.whl (18.3 MB view details)

Uploaded Python 3 Windows x86-64

uv-0.7.2-py3-none-win32.whl (16.9 MB view details)

Uploaded Python 3 Windows x86

uv-0.7.2-py3-none-musllinux_1_1_x86_64.whl (17.4 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

uv-0.7.2-py3-none-musllinux_1_1_i686.whl (16.7 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

uv-0.7.2-py3-none-musllinux_1_1_armv7l.whl (16.3 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

uv-0.7.2-py3-none-manylinux_2_28_aarch64.whl (16.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.28+ ARM64

uv-0.7.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

uv-0.7.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (22.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

uv-0.7.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (17.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

uv-0.7.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (18.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64

uv-0.7.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (17.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ i686

uv-0.7.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (16.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

uv-0.7.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (16.0 MB view details)

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

uv-0.7.2-py3-none-macosx_11_0_arm64.whl (15.5 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

uv-0.7.2-py3-none-macosx_10_12_x86_64.whl (16.8 MB view details)

Uploaded Python 3 macOS 10.12+ x86-64

uv-0.7.2-py3-none-linux_armv6l.whl (16.6 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.7.2.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.1

File hashes

Hashes for uv-0.7.2.tar.gz
Algorithm Hash digest
SHA256 45e619bb076916b79df8c5ecc28d1be04d1ccd0b63b080c44ae973b8deb33b25
MD5 8897abd15d21d26ea2b9e57e60e51a00
BLAKE2b-256 fdd4c1104ee4d8a69e4834888cd850eb4f9327c585e5e60da108fda788d3872d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 0445e56d3f9651ad84d5a7f16efabba83bf305b73594f1c1bc0659aeab952040
MD5 8e494e07c70c8c78ff017a775b521098
BLAKE2b-256 0a5c12ce48cab21fb0f9bde4ea0c19ec2ab88d4aa9a53e148a52cfb9a41578c9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc1ee6114c824f5880c584a96b2947a35817fdd3a0b752d1adbd926ae6872d1c
MD5 6d9b77d58d229dcce3cf029df72dd436
BLAKE2b-256 44f04424cf64533b7576610f7de5c94183d810743b08e81072a2bb2d98316947

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 19a64c38657c4fbe7c945055755500116fdaac8e121381a5245ea66823f8c500
MD5 763cd72f29180ccb3dc9358b0e931528
BLAKE2b-256 521f71a7c3e9c79718647fea1e6fe85ccc82d2629cd858b437ae2081190045cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 81b86fff996c302be6aa1c1ac6eb72b97a7277c319e52c0def50d40b1ffaa617
MD5 d70c7d31d1bd427b14a1b3cf620e707c
BLAKE2b-256 a5b35550a721a1e8a99117d960f16c05ad8d39aff79a3fc1aadf2ed13da4385f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 9aaacb143622cd437a446a4b316a546c02403b438cd7fd7556d62f47a9fd0a99
MD5 4c0174d9c450401594c6efdb0fdd1a26
BLAKE2b-256 f09c30a48a9d875b91b486286d1a4ccc081dad130acea0dca683c1786ddd7c84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 28fd5d689ae4f8f16533f091a6dd63e1ddf3b7c782003ac8a18584ddb8823cbe
MD5 2216cfc773a0ff8589ff69167ffdda33
BLAKE2b-256 31ed2ddd7547203ddd368b9ec56b245e09931f868daf2d2b0e29c0b69584466d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78ec372b2f5c7ff8a034e16dd04bc579a62561a5eac4b6dfc96af60298a97d31
MD5 791cde972c46c35245e32bfaa282e9a5
BLAKE2b-256 1118cfef0efe3c4ebdd81422f35215bb915fd599fc946b40306186d87e90678b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7236ec776c559fbc3ae4389b7cd506a2428ad9dd0402ac3d9446200ea3dc45f6
MD5 5f7cf69e558ea4b7f6afe9b642113c00
BLAKE2b-256 5c079d85d0a9ddd49dbec18bde741ffb33d0c671a153461b094a9c73504e1b92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1fa315366ee36ad1f734734f3153e2f334342900061fc0ed18b06f3b9bb2dfe2
MD5 098694568855262735a35f17c25a5923
BLAKE2b-256 6d04030eec46217225b77ccff1f2808e64074873d86fe445be3784649506e65e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 63c97cc5e8029a8dc0e1fc39f15f746be931345bc0aeae85feceaa1828f0de87
MD5 cf35b89b42913a0ef04dee3c0b962120
BLAKE2b-256 c731781288f9f53e1770128f7830841d7d269097ed70a4afa71578d45721bfa2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 c388172209ca5a47706666d570a45fef3dd39db9258682e10b2f62ca521f0e91
MD5 b2fa4452640f6daf289104728195003e
BLAKE2b-256 e49e4d0a947ffa4b377c6e34935c23164c7914d7239154d254aa5938db6a7e83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 48c115a3c13c3b29748e325093ee04fd48eaf91145bedc68727f78e6a1c34ab8
MD5 6b985531021a3b48a99e992d0e0aa8e6
BLAKE2b-256 2c5e7d6a788c45d5e2686d01c4886ebb21149892a59bcfa15b66d0646e73aafa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e4d1652fe3608fa564dbeaeb2465208f691ac04b57f655ebef62e9ec6d37103d
MD5 c8f47441e73808842615f1773a45ce2a
BLAKE2b-256 a6923d8da1efc7f3272ccc65c50cb13abd9e6a32246bb6c258175c68a91d0d80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 a314a94b42bc6014f18c877f723292306b76c10b455c2b385728e1470e661ced
MD5 2f3f4879f576570044cfc65a18398f59
BLAKE2b-256 1e656fae29e0eb884fa1cab89b0fa865d409e0e2bcada8316cd50b4c81e8706c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be2e8d033936ba8ed9ccf85eb2d15c7a8db3bb3e9c4960bdf7c3c98034a6dbda
MD5 89cad4d82c598cad540e9263a25afae3
BLAKE2b-256 42ca6a3f3c094794d482e3418f6a46c2753fa4f6ed2fe5b7ecf299db8cfed9ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0edb194c35f1f12c75bec4fe2d7d4d09f0c2cec3a16102217a772620ce1d6e6
MD5 7cd1f68a253ec79681a606347c35121d
BLAKE2b-256 6cac3c7e8df1d6bb84a805aa773ea4f6a006682f8241f331c9c359eb5310f042

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.2-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 e1e4394b54bc387f227ca1b2aa0348d35f6455b6168ca1826c1dc5f4fc3e8d20
MD5 e80746182c80606f1ea3bfe3086afafb
BLAKE2b-256 22c368291a239dbedc0389fa5ce5b5b6c7c2a54c52bc11e9503276f376faa9e7

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