Manage Python tool environments with declarative configuration and content-addressed storage.
Project description
uv-toolbox
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
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uv_toolbox-0.1.0.tar.gz.
File metadata
- Download URL: uv_toolbox-0.1.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b65c7503826fe1266b4fb5da5c57cdfb973a2cbeb51070d6a0feeed88bc2ec5f
|
|
| MD5 |
3458d8e34af4665a0fe76f1291fdeb31
|
|
| BLAKE2b-256 |
c585fb3c7d7f820ba2349ed2373523560f0d717316ba87e3d077f7776120d66d
|
File details
Details for the file uv_toolbox-0.1.0-py3-none-any.whl.
File metadata
- Download URL: uv_toolbox-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1f1d552a00546f45898cc8058ab21ac2daa4d55d779d6d74b31ac114359b061
|
|
| MD5 |
66e7c0f24e62bc1ec2c79327238b3667
|
|
| BLAKE2b-256 |
a6b892c9a791584470982cfb0daa1550482c23b25f6c25cfac7a01265d279d69
|