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
    requirements: |
      ruff==0.13.0
      black
    executables: [ruff, black]
  - name: env2
    requirements: |
      isort
      flake8
    executables: [isort, flake8]

Configuration Options

Virtual Environment Location:

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

  • Automatic deduplication: Identical requirements 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
    requirements: ruff==0.13.0
  - name: testing
    requirements: 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 requirements
  • Projects with identical requirements automatically share the same venv
  • Config files are discovered by walking up the directory tree

Executables:

The executables field controls which tools are exposed via shims:

environments:
  - name: formatting
    requirements: ruff==0.13.0
    executables: [ruff] # Only ruff will be available in PATH via shims
  • Optional: Only needed if you want to use uv-toolbox shim
  • Explicit control: List exactly which executables to expose
  • Prevents PATH pollution: Python/pip from the venv won't be added to PATH

Usage

Install environments:

uv-toolbox install

After the first install, a pinned lockfile is written alongside each venv. Subsequent installs sync from it via uv's local cache — no network, no re-resolution. To upgrade to newer versions:

uv-toolbox install --upgrade   # re-resolve and refresh the lockfile

Generate a committed repo lockfile with hashes for all platform variants:

uv-toolbox lock   # writes uv-toolbox.lock next to your config file
uv-toolbox lock --check  # verifies existing pins remain valid without upgrading

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 executables listed in the executables field of each environment. Only explicitly listed executables are exposed, preventing Python/pip from polluting your PATH.

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.2.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.2.0
File Size Uploaded
uv_toolbox-0.2.0.tar.gz 16.8 kB Details

Built distribution (wheel)

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

Total release size: 37.2 kB

Release files / uv_toolbox-0.2.0.tar.gz

Download URL uv_toolbox-0.2.0.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5fa6769517ac444d6e76e00d504de01a8826bb16c7e50ca657c3e671d02cb6d1
BLAKE2b-256 checksum
How to use checksums
a98768586477c9370dba5ce88124e2083ce0b32bc4b8fb0cd2828edd36ddf82f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","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.2.0-py3-none-any.whl

Download URL uv_toolbox-0.2.0-py3-none-any.whl
Size 20.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96014c16120659e4117efe63f8f7b171ab6aeb8007240a7a962e59358727c461
BLAKE2b-256 checksum
How to use checksums
a0e3d190b5aebb5b68c52af17b5e09d5b4418d0600626bf663e8cef200b5ff6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","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

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

This release

0.2.0 This release

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