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 [email protected] -- 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.7.15.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

uv-0.7.15-py3-none-win_arm64.whl (17.7 MB view details)

Uploaded Python 3Windows ARM64

uv-0.7.15-py3-none-win_amd64.whl (19.0 MB view details)

Uploaded Python 3Windows x86-64

uv-0.7.15-py3-none-win32.whl (17.5 MB view details)

Uploaded Python 3Windows x86

uv-0.7.15-py3-none-musllinux_1_1_x86_64.whl (18.1 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.7.15-py3-none-musllinux_1_1_i686.whl (17.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.7.15-py3-none-musllinux_1_1_armv7l.whl (17.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.7.15-py3-none-manylinux_2_28_aarch64.whl (16.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.7.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.7.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.7.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (18.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.7.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (18.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.7.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (17.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.7.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (16.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.7.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (16.5 MB view details)

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

uv-0.7.15-py3-none-macosx_11_0_arm64.whl (16.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.7.15-py3-none-macosx_10_12_x86_64.whl (17.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.7.15-py3-none-linux_armv6l.whl (17.3 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.15.tar.gz
Algorithm Hash digest
SHA256 c608cd2d89db7482ab40fc6e7de27afc87b20595e145ed81a2a8702e9a0d7e2d
MD5 4cf603351a2c4e2ff3f101ab061d6921
BLAKE2b-256 f2e2f4ae75e0d52abaf8c01c6948b423fbac7a6ae4413556a983959bf8f9b658

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.15-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 32a1ca819298b6cbe673becc3d52fc51a626ed003b61402824f1614d786650ac
MD5 dc4084be6fa9eea82108be2bb04699d1
BLAKE2b-256 14897f34a13ea6b336f3a0e70856bd584628556d03a865909a8a3854b7468239

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.15-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9fda476ce40a428861e62b4e7c1d1199deb48ffc9b9197219e7f78e7c59be7a7
MD5 849e49920780ca9ff859d5c8337fb9a8
BLAKE2b-256 be73d6d6fd05728263cc5bc81cf2424f2e78203fdd1b6c926f61363921bd8d8e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.7.15-py3-none-win32.whl
Algorithm Hash digest
SHA256 10ff8e18e617685f1b5ba4726da2782093ae7032e257eb500358444b610a92b1
MD5 fb189568c2def72d90b8aecfefce4f49
BLAKE2b-256 5e0a5eee2e56063708a25d6d794153884b260d6f322649d3434f4d449fb65e6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8717797f0d4b257a9d3f217959d24119342b0d96c2b224fbfefa44df5d94def2
MD5 7a506aefaa55eeab936e7f54391b42ee
BLAKE2b-256 7d50633fe84ac08ad7a233dc3b7113184af6bbfd0668078993b4408edf6fb767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d78d1e9b05ab6e540ba4567b92d6f16f80176905183db8581d8b77522c39256c
MD5 5b7eeb18e5875d090ac0e92e7da856c4
BLAKE2b-256 f2eda199eb35aff558e3276a3c4591e1d7152a7fdd2d1b5dad60c21191748f72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 81201cf430e527fa88bcfa9a6adb91ad4080cf635684bbc456e4bb589cea6e3c
MD5 47334ab0717a92a583beba54d5eefe92
BLAKE2b-256 9375a9d1301267f781c5d06df05dd8bb87884b7818f9dfcccb211716754b9805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7edac5d090bf9cb84bf0139ae48d3629384d94638b1e2215ca2441f786b9e8eb
MD5 bd9ce6e7e3fa3291078f91422b0e6d96
BLAKE2b-256 a8e34552eb0f95beeb84c5d7d60aa184d62357194df71a8a2e34b8f78681890d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f6f78e6b816b9fb2cb92f1f1857dd7725cc2008d800e4f4cdc195f64f0c96c8
MD5 055dba99706c09117efcc98294f76464
BLAKE2b-256 066590760c9c90633ee37bea46687edddb633f047002625fbb24d5dd43c7f465

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3cd980b68bbfc80ccc9fe8ab4fccec5350ec0be4135569d8c5bddb605a2fd390
MD5 f5fa5b111041e86c554344685a792ba9
BLAKE2b-256 af013a83831b8916ccb3ce22ac1295ba079f95ab74461236c379f8817a2bf47f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 df99a0f54f8d0889879dee3fb99ec3d0748bbd42af31428197b5fe6b90b7b974
MD5 b8d4d08516a63e8861da2eb7d0a41e21
BLAKE2b-256 573250b1e80b91ef2b4478217f6a1754c0888f1e90379b8fa77ed70d5f5f0ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 361b9b004e62a8d620b7eb79f51f9cc9f815ee0b287c2ce42fb3618f84172a2f
MD5 b5efce2afff85a65d2fbe8e969b1ce4a
BLAKE2b-256 7beeb506ebdc89d9087ac3436eb7eb22c7ac8926eb199e5253769568316db112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0601b9757f70f0cb243963ba2c4241d1d9207f4b5afc63c68d609ac5e54ce657
MD5 63bffd33fbf58c0e25c0651fb4ab5dc0
BLAKE2b-256 4e88f019ebc681882cac372f403b4008389e7db3481516ae78ad23bb766f9959

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1d2d9cff6af77e9dd604782da785e271b7082ddf16636e34e0acee1689cc9392
MD5 afa376a86d775c16074291bb339f10b6
BLAKE2b-256 7b6c073e8c8d2c1154f72a6323482b0a5388655622c2fe0867e47b4bb8893e3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 cd374f9d4eca1b07662e2d774c710d18a7865a4387bc95e8d08fc9070473bb5f
MD5 06a8fc586b0e1e0ccc95401ddc61f6f0
BLAKE2b-256 1313ad63a01b2a6fc68b5b0bd5ddcaa99e997e4143233bd09b2db7b0f917c2f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc5ed8a4c804b6cacc13fdb794ff86fb6cca02b8966e075a9e15ea976c642454
MD5 abd618a20ed53c0aa24a07ec77f6edab
BLAKE2b-256 a14cb36bc5e665d1466782a7687347291f1f148d78ea1bb1534114b6f8437098

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 33f57f51ff980a74131cc8cde501b8467faec21aef35518ff6b544450be2f9be
MD5 e6fc0a9bf741b497b4d25dab56236146
BLAKE2b-256 3e60f8c159919b96ae9c77bd61f78d5e0dda2769840510abb4ebcc66750b2bb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.7.15-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 804b927f1b08f97ad597405276058bc94bab9e35c77e7f86c4ca635f72269ff8
MD5 3599caaca620d325f538e11329b89d4c
BLAKE2b-256 3a575bd08b88b583bde2daa54abaf418de1b0b6712bc60d5583a3cc9455174b3

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