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

Uploaded Source

Built Distributions

uv-0.6.6-py3-none-win_arm64.whl (15.9 MB view details)

Uploaded Python 3 Windows ARM64

uv-0.6.6-py3-none-win_amd64.whl (17.1 MB view details)

Uploaded Python 3 Windows x86-64

uv-0.6.6-py3-none-win32.whl (15.7 MB view details)

Uploaded Python 3 Windows x86

uv-0.6.6-py3-none-musllinux_1_1_x86_64.whl (16.4 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

uv-0.6.6-py3-none-musllinux_1_1_i686.whl (15.6 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ i686

uv-0.6.6-py3-none-musllinux_1_1_armv7l.whl (15.4 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARMv7l

uv-0.6.6-py3-none-manylinux_2_28_aarch64.whl (15.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.28+ ARM64

uv-0.6.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

uv-0.6.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (20.8 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

uv-0.6.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (16.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

uv-0.6.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (16.9 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64

uv-0.6.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (16.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ i686

uv-0.6.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (15.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

uv-0.6.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (15.0 MB view details)

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

uv-0.6.6-py3-none-macosx_11_0_arm64.whl (14.5 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

uv-0.6.6-py3-none-macosx_10_12_x86_64.whl (15.6 MB view details)

Uploaded Python 3 macOS 10.12+ x86-64

uv-0.6.6-py3-none-linux_armv6l.whl (15.7 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.6.tar.gz
Algorithm Hash digest
SHA256 abf8be1e056f9d36ddda9c3c8c07510f6d4fe61915d4cd797374756f58249c81
MD5 dde0388a09345d7d9d1ca33babe30f90
BLAKE2b-256 71c56d5a98618437255a70106338a5e3aaf154b18e3ef0e0313bbe79791cd792

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.6-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 b804a7f8f37c109e714ce02084735cc39a96b7e3062e58420120fe4798a65ef1
MD5 ece46e8aebe8540c2f0d664fcf2149b9
BLAKE2b-256 6bbc9cf8ffe31607e32bc1de05edea2c11158b3aa7309cffc8e59ec7409a4988

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c9802cac1fb9cbff97d1adf2c2516f2f368eea60c7d6a8e3a474f2bca7b44c6c
MD5 49e7f1a442ae01fb5e0635846fc9ea38
BLAKE2b-256 7bd48f2df45ef1cfb645f38e48595532c8406658f702a330f5d002033e84ebfd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.6-py3-none-win32.whl
Algorithm Hash digest
SHA256 419e8cd84db545a0880223fd0a042c063a1412179903797a87f5bd0d1613cdbd
MD5 d6d7a3f9f131d5b58cf6361ed484160d
BLAKE2b-256 77ef511a9ac6cd732e5ba581426bd9f9983606511c2e676f696dbd1b7a9c72c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 61f13d8af0aad5b1f9332fee2cd7eeeec5cf93634c5071bbbcf5d338a0920098
MD5 8e3b79e62e1c8c627a5207bf5e602181
BLAKE2b-256 d14de3a00a5cd318ba6d131c1d566f87cc449b54fc84b9010af0b5bfa252bd36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 1d62a3fb6fdbb05518e5124950d252033908e8e2dd98e17c63fd9b0aa807da6f
MD5 b2dd9632730f11fe7666de54a66352c8
BLAKE2b-256 153d231379ca356cd3468633d712e099e801b597a06f891f3bb7ec3aed2c071a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 5a6839ff6cdaa2fc7864ae893d725d04dd914e36fb20f64c6603edc4a17dfe78
MD5 ccdd092ab05e3ce0689e639b10af861d
BLAKE2b-256 8a709df763ee88b054729118ca4caf5479160d741a2e3303a81f5c447c9b76ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 257b44eb43790c1cde59527f53efd1263528bf791959c94be40c3d32c8ac4e6d
MD5 f3d3064f2c1eaed87a31063d76357d0f
BLAKE2b-256 265fc7534ae000a31d4eca939668234ec385abab925b28d1514a6c5f01155384

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe1f84bced6d373a02d8b960efc3a4b65d63ab19e1fdc4f12a56a483d687f4db
MD5 6af7e1f37df83b153b8dbf1710e04227
BLAKE2b-256 146584399efca40f3abf51958f289b65b5ae9e643817e9ed98defbe4da97efca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f0f4934dbfff8ea30800aeda5e9336fc2dc06710f3a6216fac783bc63f98fc54
MD5 d0ab4000e14e1eedf57335c4d03edd1f
BLAKE2b-256 c7f990ad562eec31c5aa20987964450606d8080c1e0eafb5b303be7cdb1dfd57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f8105a72d6502d5a5fbf404afa1124afe6501878ce6a05caeac29e457cea2785
MD5 c51fcda3efd0dea24e1c4bfebcac4da7
BLAKE2b-256 9df520793e443af05c4755e8e7ead85b6fd70073204682e34eced190786d33bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 c05f376f56a925d43304ee02d2915df002497fa1c3f51908252b868704131c32
MD5 9f03af3e5c465e9d214b54435f3af945
BLAKE2b-256 6688110b95b9bc8652c24176fdca74cc317f9558dddf6737158d3df65bfb64ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 af832fe366bc6174fe822b968bbeb1bb1f8aeb42418941281a696257a5669bb7
MD5 d35a456b1e96ea03ac959bc75d493b5c
BLAKE2b-256 be6ae8e363458096e00841d205fbfa502a94e986284111bdd0b5130e952bcb90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8733355d21e325bb896bd2b7bc37bbcb888097d532ce14265efbb53beaf07ca0
MD5 75cc96917050a0582d42e1583324fcb0
BLAKE2b-256 fcc95c218dafe1135bbbf0ab9174686344554645f8ebe908351079f31c4bfc57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7f0836ba3d9c979e744a0991b212934877b786541fd5c9ee7eff99a3f8c9dd6a
MD5 80cf49f4464e6cb28d3c171d98a54084
BLAKE2b-256 e823d29f270e0b6bf8a2af9bef4af4e43f47873373dfd7c7f031b75f50d0596b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4b41b3024ca55c17e7dfda1e907249e598379a8202d2a76e05018156a1c0501
MD5 e7970be5fb4d025d5adf93765ccb6842
BLAKE2b-256 5b81cbc733571f07d1177f95c4b531756db1fd2e348f2105a0ac93527d5e0d10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c55f1ebc980bd4a2013999e0a22e2796deb08b56c7815942d74ba23abce8d4fc
MD5 c8547899b0eeeb0cd0fcff17f64882da
BLAKE2b-256 41130258d919d97358516a670c5ca354e0fb6af8bdd2caa3c8e141c55547d426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.6-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 8a6d2aca8794e72e2e68ebfae06b8697bb0ea8a8d016229109125d364f743b7a
MD5 a12e3ef5241ac48cfdadf0fbb5ca7825
BLAKE2b-256 597aa01226a4c2282afcab0e518082772cc3f5133c325d428f8e298c1aac7c5a

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