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.0.tar.gz (2.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.6.0-py3-none-win_arm64.whl (15.8 MB view details)

Uploaded Python 3Windows ARM64

uv-0.6.0-py3-none-win_amd64.whl (16.9 MB view details)

Uploaded Python 3Windows x86-64

uv-0.6.0-py3-none-win32.whl (15.6 MB view details)

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.6.0-py3-none-musllinux_1_1_armv7l.whl (15.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.6.0-py3-none-manylinux_2_28_aarch64.whl (15.2 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.6.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (20.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.6.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (15.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (15.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (14.9 MB view details)

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

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

uv-0.6.0-py3-none-linux_armv6l.whl (15.5 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uv-0.6.0.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.31

File hashes

Hashes for uv-0.6.0.tar.gz
Algorithm Hash digest
SHA256 7dc1f1050b89537ee8ac66ef532a05fe822293d788b6754db729e1b4b3be062a
MD5 9bd92f358a314c3a712d8ea93ef9483e
BLAKE2b-256 7d63321ab82ff5f5c665ca9aeef20150d12775f32386a240eda045cf8f51c8bc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 32af3ab683aa3e630fbb4f069637445488770a6722f8d97aaae7f0032d32b68f
MD5 9f24a1e754ad13a1024b6d9352a2f7ec
BLAKE2b-256 13eaf40a874d32e4e74ec62799ed83df840187c7062855ed16e51cb2dabe807a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e9f7041131e6f1abd4e91f94143e31f5022d71e6f388976c62e5016eaa676f5d
MD5 049996f827857fa9441cf169c0344e74
BLAKE2b-256 5c93f7699bd6774a969625717f7e687b37f21ca63b6015c361d2eba073160f19

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 10eb10c88a9837d68dd3d7deef66b31c22b3d6984175ade0702c60f04b804d68
MD5 bd626edd8eab614b47513f61c59357b1
BLAKE2b-256 4368229b623e96e6d83a7a8078ecd4c90b1ccff071a8a3b0153bfa40213298b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 967e5e76910f22f0fc03dc60913e16b37f5c90a5f173830c6566f13a34bca22e
MD5 028cd08d5fe130754bf536520440a766
BLAKE2b-256 923cac38d15db45a01e831214d50521eb2b2d78d465a6575a0bb4d9a89edae80

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv-0.6.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d8d9b7747b8125fafd12ce72a06a5df22c12f19eb34dc809705304cbf9f4ba45
MD5 71e47236657d26b1c503882843229eed
BLAKE2b-256 7c1b8487406c3a4ff1d326764e7f7e7b529dadfe789e47ba9327f77fb2df32b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 2e6ae77ab255f5732e8dd7bfe51128955cc863c8b478c842fbebce31111f403e
MD5 31e41b1b7c92549277d97e4033a61138
BLAKE2b-256 e4cae439a34379b09c8486cea97ef6e9c9ac84c75d415141bbae785fa31fd9c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 18c481de419bf7d77243fb9f79dba2f06510008b4b451e2db23c6a8e3c269970
MD5 d811d01ab6d5fe0665d4145faf8ab7fc
BLAKE2b-256 f4437b9def0e832be06e6da2c37f0e845eb554e2591c019a82644f6add9087e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd09c6b7ff1742aca07ad4805ef491eb91b03e4b0815a230076381900061f4a7
MD5 7a7bdf32b4f8e6f67ff2fa076d27fb66
BLAKE2b-256 176e8af7aa224d20ea9d40c751df318887e533de4feb970d76134a151d1f4137

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c986ce9c02beccc08ab8ebdaf05a5540af4fd361f15049cdabdd2fee3d26afb9
MD5 59552624ba407b711651683c083bc2c1
BLAKE2b-256 45cbacda84c40d4679bfe3a539b9f17ef648969688b407c1391c6e168f3a25a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ec09034b7d5ba255fc80e5bec2a3f2ff3a40bdaea3c10a056e2fb3aeceb94d94
MD5 a11f07bd51a7f106df05ce823cd34fa0
BLAKE2b-256 fd41a7d3ae81e5f200f7dd339dabe9c81bf6ff0182a67d03d7fc712bc6ad9542

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 b3829d82e0dd37de375b5d9ee8485731465e255e61557f4df798e3324cf306cd
MD5 a815ccddb8321d0a8487a20efaae9473
BLAKE2b-256 200d4fdfe36e6409af7d61b502c325dbb9fb0d2487c29fccf9f55a3652759607

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a51a09e1d06ac677f4cc478fdd73d6d243a7e71d542174e75748c9843406f483
MD5 27209e2e4133262a3de34fb5452a2c9a
BLAKE2b-256 dd0fc271840728449bc00a155c141fdb22cc4bcd1c6b23fbc353ba5ad316286a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f620509b75285b216f855ddd16126f4d8868ff8cd44a518e6f9ec917d8ac3ceb
MD5 2b196c5ab5db0d17196a50d06be28bc3
BLAKE2b-256 6e9dfb0278d0655da86b1f5301e3f4a85d0cac6875eedf8c06960493791e22c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7dbdaf1c99df5b78fd39ced7ede967aa596ecf4f9d0bee8deb182d4e160dd488
MD5 82834b28fd5baf454caaa9997df37aed
BLAKE2b-256 2c7c59939f2c704eee7a1b5f58814970e46527668e51ad715f1466a6793edee4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 26d655adf59ec088f07a2459de3f5e0565e8f84f389bfe936a354e5e169dfc8f
MD5 ba6a8141b8efff032a0622881f026f16
BLAKE2b-256 6dc3c1e81bfdd3414492650ca2647dbb466bb9e0063ee71020dc49f5f011f9ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5dca405337e5b62b3172335fc8a5e627c9f07cedc87c8ff595199b847b0b877f
MD5 ff5163c9c42bb79b1cf052ce0e003fed
BLAKE2b-256 f29e2695331ac5187a74940870ba9400d207a0d593dd5a0417de6fffa5246b3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uv-0.6.0-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 b56235a98d81b156052f4e8d436ebeba60687a91113aeeebab310a8d5998cd68
MD5 976024c12d5db6585efa694716210e98
BLAKE2b-256 4e44b241637dae9d8d37dda7698ab6c2ef657d20162e99ee78ecd73f7366665d

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