Skip to main content

uv-toolbox

CI PyPI Python Version License: MIT codecov

uv-toolbox is a CLI tool for managing Python tool environments. It will help you create multiple virtual environments and manage their dependencies through a declarative configuration file.

Here is an example in YAML format:

environments:
  - name: env1
    dependencies: [ruff==0.13.0, black]
  - name: env2
    dependencies: [isort, flake8]
    sources:
      flake8:
        git: https://github.com/PyCQA/flake8.git
        tag: 7.3.0

Each environment is a small uv project: dependencies, sources, requires_python and a uv passthrough for [tool.uv] settings work as they do in a pyproject.toml, and locking uses uv lock. See the configuration docs.

Configuration Options

Virtual Environment Location:

By default, virtual environments are stored in ~/.cache/uv-toolbox/ using content-addressed storage. This means:

  • Automatic deduplication: Identically locked environments across projects share the same venv
  • No naming conflicts: Venvs are organized by content hash, not names
  • Works from subdirectories: Run commands from anywhere in your project
# Default: centralized, content-addressed storage
# (no venv_path needed - defaults to ~/.cache/uv-toolbox)
environments:
  - name: formatting
    dependencies: [ruff==0.13.0]
  - name: testing
    dependencies: [pytest==8.0.0]

# Optional: local storage (per-project)
venv_path: .uv-toolbox

How it works:

  • Each environment's venv location is determined by hashing its locked packages
  • Projects with identically locked environments automatically share the same venv
  • Config files are discovered by walking up the directory tree

Executables:

By default, shims expose the console_scripts declared by the packages in dependencies. Scripts belonging only to transitive dependencies are excluded. Use omit_executables to hide selected scripts, or executables_override for an exact allowlist:

environments:
  - name: formatting
    dependencies: [ruff==0.13.0, black]
    omit_executables: [black]
  - name: no-shims
    dependencies: [pytest]
    executables_override: []
  • Automatic: First-order package scripts are exposed without duplication
  • Selective omission: Remove individual automatically discovered scripts
  • Exact override: Use any list, including [] to expose nothing

The legacy executables key emits a deprecation warning and will be removed in uv-toolbox 1.0. Use executables_override instead.

The requirements and requirements_file keys are deprecated in the same way. Run uv-toolbox migrate-config to convert them to dependencies and sources (see migrating).

Usage

Install environments:

uv-toolbox install

Each environment is locked with uv lock and installed with uv sync --frozen. Later installs sync from the lock via uv's local cache, with no network and no re-resolution.

Commit a repo lockfile, which embeds every environment's uv.lock:

uv-toolbox lock                         # writes uv-toolbox.lock, keeping existing pins
uv-toolbox lock --upgrade               # re-resolve everything
uv-toolbox lock --upgrade-package ruff  # re-resolve one package
uv-toolbox lock --check                 # verify in CI, offline, without writing

Run a command inside an environment (uses the configured default if set, otherwise pass --env):

uv-toolbox exec --env env1 -- ruff --version

Add shim scripts to your PATH for direct tool access:

eval "$(uv-toolbox shim)"

This creates wrapper scripts for the console scripts declared by each environment's dependencies. Transitive package scripts and the venv's Python/pip executables are not exposed.

If you use mise, the mise plugin handles PATH management automatically on every shell activation — see the mise integration docs.

Metadata

Release files for uv-toolbox 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uv-toolbox 0.4.0
File Size Uploaded
uv_toolbox-0.4.0.tar.gz 30.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uv-toolbox 0.4.0
File Interpreter ABI Platform
uv_toolbox-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.8 kB

Release files / uv_toolbox-0.4.0.tar.gz

Download URL uv_toolbox-0.4.0.tar.gz
Size 30.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a678c42a0410a278de1afb08f87a4984d9975e92dc820447ccff47c32b0b621f
BLAKE2b-256 checksum
How to use checksums
dfeae7a7a00ded9658a145ab37da258e27b04ff5772abdedd332fbd15d9d4069
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / uv_toolbox-0.4.0-py3-none-any.whl

Download URL uv_toolbox-0.4.0-py3-none-any.whl
Size 36.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2997a3a28de40aed51ed98356f3a5da3e3a3a80c40ab839a38dab3626abdb7d9
BLAKE2b-256 checksum
How to use checksums
1970d8c4c0ced8f61aca63a20a0c5d2a7adf78b3bd66fdfb349a3a1d30b1a687
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.4.1

2 release files

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page