- Notifications
You must be signed in to change notification settings - Fork1.2k
An extremely fast Python package and project manager, written in Rust.
License
Apache-2.0, MIT licenses found
Licenses found
astral-sh/uv
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An extremely fast Python package and project manager, written in Rust.
InstallingTrio's dependencies with a warm cache.
- 🚀 A single tool to replace
pip
,pip-tools
,pipx
,poetry
,pyenv
,twine
,virtualenv
,and more. - ⚡️10-100x faster than
pip
. - 🗂️ Providescomprehensive project management, with auniversal lockfile.
- ❇️Runs scripts, with support forinline dependency metadata.
- 🐍Installs and manages Python versions.
- 🛠️Runs and installs tools published as Python packages.
- 🔩 Includes apip-compatible interface for a performance boost with afamiliar CLI.
- 🏢 Supports Cargo-styleworkspaces forscalable projects.
- 💾 Disk-space efficient, with aglobal cache fordependency deduplication.
- ⏬ Installable without Rust or Python via
curl
orpip
. - 🖥️ Supports macOS, Linux, and Windows.
uv is backed byAstral, the creators ofRuff.
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, fromPyPI:
# 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 theinstallation documentation fordetails and alternative installation methods.
uv's documentation is available atdocs.astral.sh/uv.
Additionally, the command line reference documentation can be viewed withuv help
.
uv manages project dependencies and environments, with support for lockfiles, workspaces, and more,similar torye
orpoetry
:
$uv init exampleInitialized project `example` at `/home/user/example`$cd example$uv add ruffCreating virtual environment at: .venvResolved 2 packages in 170ms Built example @ file:///home/user/examplePrepared 2 packages in 627msInstalled 2 packages in 1ms + example==0.1.0 (from file:///home/user/example) + ruff==0.5.0$uv run ruff checkAll checks passed!$uv lockResolved 2 packages in 0.33ms$uv syncResolved 2 packages in 0.70msAudited 1 package in 0.02ms
See theproject documentation to get started.
uv also supports building and publishing projects, even if they're not managed with uv. See thepublish guide to learn more.
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 requestsUpdated `example.py`
Then, run the script in an isolated virtual environment:
$uv run example.pyReading inline script metadata from: example.pyInstalled 5 packages in 12ms<Response [200]>
See thescripts documentation to get started.
uv executes and installs command-line tools provided by Python packages, similar topipx
.
Run a tool in an ephemeral environment usinguvx
(an alias foruv tool run
):
$uvx pycowsay'hello world!'Resolved 1 package in 167msInstalled 1 package in 9ms + pycowsay==0.0.0.2 """ ------------< hello world! > ------------ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Install a tool withuv tool install
:
$uv tool install ruffResolved 1 package in 6msInstalled 1 package in 2ms + ruff==0.5.0Installed 1 executable: ruff$ruff --versionruff 0.5.0
See thetools documentation to get started.
uv installs Python and allows quickly switching between versions.
Install multiple Python versions:
$uv python install 3.10 3.11 3.12Searching for Python versions matching: Python 3.10Searching for Python versions matching: Python 3.11Searching for Python versions matching: Python 3.12Installed 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.0Using Python 3.12.0Creating virtual environment at: .venvActivate with: source .venv/bin/activate$uv run --python pypy@3.8 -- python --versionPython 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 darwinType "help", "copyright", "credits" or "license" for more information.>>>>
Use a specific Python version in the current directory:
$uv python pin 3.11Pinned `.python-version` to `3.11`
See thePython installation documentation to getstarted.
uv provides a drop-in replacement for commonpip
,pip-tools
, andvirtualenv
commands.
uv extends their interfaces with advanced features, such as dependency version overrides,platform-independent resolutions, reproducible resolutions, alternative resolution strategies, andmore.
Migrate to uv without changing your existing workflows — and experience a 10-100x speedup — with theuv pip
interface.
Compile requirements into a platform-independent requirements file:
$uv pip compile docs/requirements.in \ --universal \ --output-file docs/requirements.txtResolved 43 packages in 12ms
Create a virtual environment:
$uv venvUsing Python 3.12.3Creating virtual environment at: .venvActivate with: source .venv/bin/activate
Install the locked requirements:
$uv pip sync docs/requirements.txtResolved 43 packages in 11msInstalled 43 packages in 208ms + babel==2.15.0 + black==24.4.2 + certifi==2024.7.4 ...
See thepip interface documentation to get started.
See uv'splatform support document.
See uv'sversioning policy document.
We are passionate about supporting contributors of all levels of experience and would love to seeyou get involved in the project. See thecontributing guide to get started.
uv's dependency resolver usesPubGrub under the hood. We'regrateful to the PubGrub maintainers, especiallyJacob Finkelman, fortheir support.
uv's Git implementation is based onCargo.
Some of uv's optimizations are inspired by the great work we've seen inpnpm,Orogene, andBun. We've alsolearned a lot from Nathaniel J. Smith'sPosy and adapted itstrampolinefor Windows support.
uv is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE orhttps://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttps://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uvby you, as defined in the Apache-2.0 license, shall be dually licensed as above, without anyadditional terms or conditions.
About
An extremely fast Python package and project manager, written in Rust.