主页

索引

模块索引

搜索页面

uv命令

备注

🚀 A single tool to replace pip, pip-tools, pipx, poetry, pyenv, virtualenv, and more.

  • An extremely fast Python package and project manager, written in Rust.

Project management

  • 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.4
    
    $ uv run ruff check
    All checks passed!
    

Tool management

  • 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.4
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.4

Python management

  • 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 pypy@3.11
Pinned `.python-version` to `pypy@3.11`

Script support

  • 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`
    
    $ cat example.py
    # /// script
    # requires-python = ">=3.12"
    # dependencies = [
    #     "requests",
    # ]
    # ///
    import requests; print(requests.get("https://astral.sh"))
    

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]>

A pip-compatible interface

  • uv provides a drop-in replacement for common pip, pip-tools, and virtualenv commands.

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
 ...

主页

索引

模块索引

搜索页面