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.

FAQ

How do you pronounce uv?

It's pronounced as "you - vee" (/juː viː/)

How should I stylize uv?

Just "uv", please. See the style guide for details.

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

Uploaded Source

Built Distributions

uv-0.8.0-py3-none-win_arm64.whl (18.1 MB view details)

Uploaded Python 3Windows ARM64

uv-0.8.0-py3-none-win_amd64.whl (19.5 MB view details)

Uploaded Python 3Windows x86-64

uv-0.8.0-py3-none-win32.whl (17.8 MB view details)

Uploaded Python 3Windows x86

uv-0.8.0-py3-none-musllinux_1_1_x86_64.whl (18.9 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.8.0-py3-none-musllinux_1_1_i686.whl (17.8 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.8.0-py3-none-musllinux_1_1_armv7l.whl (17.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.8.0-py3-none-manylinux_2_28_aarch64.whl (17.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (19.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (19.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (18.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (17.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (17.2 MB view details)

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

uv-0.8.0-py3-none-macosx_11_0_arm64.whl (16.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.8.0-py3-none-macosx_10_12_x86_64.whl (18.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.8.0-py3-none-linux_armv6l.whl (17.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.8.0.tar.gz
  • Upload date:
  • Size: 3.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.22

File hashes

Hashes for uv-0.8.0.tar.gz
Algorithm Hash digest
SHA256 5d4b05056cc923e579007aede5ad1c3cf2c22628a89585f503b724521036748c
MD5 d5aba8a1098fc32e2ec56d2bea73bc74
BLAKE2b-256 f16c0f42f6f59af910ab67ce5acb7f11e6341275cfe9cfa0b8a2ae97303e5775

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 aefc09b9a580f7f41a2358462215538f3806de60c6f20ade4a25ee4d678267e1
MD5 9b2ba44122bd83c1b8ca8e934163cb89
BLAKE2b-256 79952803b563c61cd9b26f89a15b248d7e2ee5bbfbac892966ebd09111613f38

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2f47fca8cb0301408ec1ae7f3e0388afb36fc36188d1775dbd8daf336bf5be6f
MD5 4902f1f9b35c359ed97147f6efcdc73e
BLAKE2b-256 fd4e4a69b1baa14dfee113f76c823ffa4e79cd6bc6452c24454382a6fa793f2a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.8.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 84b03d7b34e1a8e62b34d13e88f434e3f1773a0841f7ba3603ca23d360529e84
MD5 eef012b3c525eaa071d292b6802219fa
BLAKE2b-256 3739c470b8de6e250fb8f146c3f72c396a9e9f457cfbb04618f430cc52a3a84f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 29757a08499e4c4462efa4fcba664c8850eb7ab8ec04852582adb901591dcc50
MD5 d3400abe61935b585c7597b856426800
BLAKE2b-256 e091b88ffc2355fe6c2d1695f42a4605ff0f2773d5bd1a62699757c84ccc6496

See more details on using hashes here.

File details

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

File metadata

  • Download URL: uv-0.8.0-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 17.8 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.22

File hashes

Hashes for uv-0.8.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7bd1ff23f8585e0e80024341aeb896b6b5ce94d43d3a95142be8e4bb3f1354b4
MD5 1e9b4c9b9fe3b69f05ad1b91e9d2a0cc
BLAKE2b-256 ce373990cf8a19012010cd1fafce7934c0aaa8375712c8bc037e0c3ef148df0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 9fb57d550887e9858b8c7c0417e5aa3e9629c2ec851f1567f1cde2ba9bf2ee79
MD5 31b3de9c48f056ffb1a9de6baee2f66e
BLAKE2b-256 1c17ce98535a2f167feeea4d3b5f266239ebfe11ba5ceb1be3aad9772b35e9e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 57af365c459d8e05274363cb10f4781a5e15b7b6f56d1427fd5b04302aa3d244
MD5 1f200b690cbdd344babdc2beb97f7353
BLAKE2b-256 2a448754d0a27b4d52d8cce9a5d2e50196dc14a5b7c0739858eabf4abfec1740

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb939490ce24d5f88ddebf2ceaf30c613b2bd27f2e67ae62ec0960baa5f8412d
MD5 4f6ec801412ecdb83946b7bbff42b770
BLAKE2b-256 bf94b8609393606e2f80dec8d6e2a26b79d703857a9d761487cdd05d081d628f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d3fcbd19654f168e1cae3054ed75cfc0c80a452d0668f90fc579135de6d7588e
MD5 f6dc0fa4ce036c1b0284b7aa60d5253e
BLAKE2b-256 9173c8ee97f38adee10abfa7040ea5e3f5c37e0be2e67437346ba4dcce211d01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6f5deec88789d0c03eba6af2e615e310eaa4426deb5c690f15e54f09d4a8ad0d
MD5 a740807d78e2b13527236439fc9c735c
BLAKE2b-256 380be74a16000ad8e5811ed648bb1801377b311640ed5b7033959fb5c80ab826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 c039a27387033c84eb07023c941cb6c3f4d71336ada54b83866929af9db75839
MD5 7d6d57da732cf295d801bc3d07b04136
BLAKE2b-256 00438c86a21efced9d2617311b456a1e8ad76f4eba2d4809fe5a8d4639719949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 19bd1fc94de3714c41d9f9f4dbcfdd2feeca00439b2fb2212ece249649b85c72
MD5 f552e68489987b29b11ee2e7cb5af782
BLAKE2b-256 f32880a4c04e0c843b16c2406a9a699dea4d2ac0f4863295194a7e202b917afa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 422e6c61b1555478f34300663f0057d5d4fea788c50eae31b332d0cec2a71536
MD5 0574384b7ac7db28533ead7073daa066
BLAKE2b-256 c108fd29a5f93576f81a4d912e60d98fcb78e727c293f57b5a703e121d1875f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b784215c688c4eb54df62fb7506ba7c763fb8c9ba8457cd5dd48f0679f5d0328
MD5 2ebde49b73509d0ab6efad812ac68b5a
BLAKE2b-256 6e8aed8c00d04c621b693c53cc9570ecddf766f8ff2078d6182eba55d0c20b10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d0ebf05eaee75921b3f23e7401a56bc0732bcdabb7469081ab00769340a93b4
MD5 f857e13e9e090c3630465bc8d306ecc7
BLAKE2b-256 9d989a89983caa05cf998eea3dac1e6cff2e0ab8099be0695fd8b9dc6a5038a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6aeecfef8955dafcbad24ef5258341f2fcdf969949f74ccaa16a7bf9c3ec44b4
MD5 1c9b5aca013cff959b64cdfbbfda4be9
BLAKE2b-256 8ec1160b81f8c34bf5ea6bddde96f80f3f000d083482f2612a98725a9f714707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.8.0-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 7f1a7f9b10299d9db15acac6cdffc5af23c2b0fd6e56add6d6e5d100a82b5c1f
MD5 d80664615952db984d9bacf18ba116f3
BLAKE2b-256 730a07735385f63229c5a6079044861a7462b1f9ff02dc7c6a891d296ffed9b0

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