uvenv: pipx for uv (🦀)
Project description
uvenv: pipx for uv
Inspired by:
Installation
New:
uvenvis now also installable via the snap store.
Thepipmethod is still recommended, but if you want to usesnap, please check out docs/snap.md!
- Install via pip (or alternatives):
pip install uvenv # or `uv install uvenv`, `pipx install uvenv`
Note: On some systems (e.g., Ubuntu 24.04+), global installation via pip is restricted by default. The recommended way to install
uvenvfor these systems is to use theinstall.shscript:$SHELL -c "$(curl -fsSL https://raw.githubusercontent.com/robinvandernoord/uvenv/uvenv/install.sh)" # instead of `$SHELL`, you can also use `sh`, `bash`, `zsh` > ``` For more installation alternatives, see [docs/installation.md](docs/installation.md) if you encounter `externally-managed-environment` errors.
-
Optional (for bash users):
uvenv setupThis installs the following features:
- Ensures
~/.local/bin/is added to your PATH, so commands can be found (unless--skip-ensurepath). Can also be activated viauvenv ensurepath - Enables tab completion for
uvenv(unless--skip-completions). Can also be enabled viauvenv completions --install. - Enables
uvenv activate(unless--skip-activate) to activate uvenv-managed virtualenvs from your shell
Usage
uvenv
Most pipx commands are supported, such as install, upgrade inject, run, runpip.
Run uvenv without any arguments to see all possible subcommands.
🆕 Freeze and Thaw
You can snapshot your current setup into a uvenv.lock file using:
uvenv freeze
This lock file records all installed applications along with their metadata — including version, Python version, and any injected dependencies.
Later, you can restore that exact setup using:
uvenv thaw
This is useful for replicating the same setup on a different machine, or after a clean install or system update.
Lock file formats
The uvenv.lock file can be saved in one of the following formats:
- TOML (default): human-readable and easy to edit
- JSON: more verbose, but script-friendly (e.g. with
jq) - Binary: compact, but not human-readable
Choose the format using the --format flag:
uvenv freeze --format json
Selective freeze/thaw
Use --include or --exclude to control which apps get recorded or restored:
uvenv freeze --exclude some-app
uvenv thaw --include only-this-app
For all available options, see:
uvenv freeze --help
uvenv thaw --help
Migration from uvx
Note: The tool previously named
uvxis nowuvenvdue to a naming collision with a newuvcommand. The new name better reflects its purpose, combininguvwithvenv.
You can runuvenv self migrateto move your environments and installed commands fromuvxtouvenv.
Platform Considerations
- Rust-Powered Performance (uvenv 2.0): Starting from version 2.0,
uvenvleverages Rust for improved performance and compatibility withuv. - Prebuilt Binaries: Currently, prebuilt binaries are available for x86_64 (amd64) and aarch64 (ARM64) on Linux, as well as Intel (x86_64) and Apple Silicon (ARM64) on macOS.
- Other Platforms: If you're on a different platform, you can still use
uvx 1.x, which is written in pure Python. Find it at robinvandernoord/uvx. - Alternatively, you can Compile for Your Platform:
- Install the Rust toolchain:
curl https://sh.rustup.rs -sSf | sh
- Clone the
uvenvrepo and navigate to it:git clone https://github.com/robinvandernoord/uvenv.git cd uvenv
- Set up a virtual environment (choose Python or uv):
python -m venv venv # or `uv venv venv --seed` source venv/bin/activate
- Install Maturin (Python with Rust package builder):
pip install maturin # or `uv pip install maturin`
- Compile and install the
uvenvbinary:maturin develop - Now you can use
uvenv:./venv/bin/uvenv
- Install the Rust toolchain:
For additional details on building and distribution, refer to maturin documentation.
License
uvenv is distributed under the terms of the MIT license.
Changelog
See CHANGELOG.md on GitHub
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 Distributions
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 uvenv-3.9.1.tar.gz.
File metadata
- Download URL: uvenv-3.9.1.tar.gz
- Upload date:
- Size: 91.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
686e048ee48a2ca929388854fad9bf470d75ca367a8d5c9844d0bda87eb27814
|
|
| MD5 |
1b79d193977e6b79dbade167252e3d21
|
|
| BLAKE2b-256 |
7815654afdcff8c0077183a5bcc2b4ad0672b4f135aac88ddbe8b1869053c476
|
File details
Details for the file uvenv-3.9.1-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc0c7a20158915af18df1d1bec29d243e8667f208641c8e1b0511a9d41c4ea36
|
|
| MD5 |
71ea291029a4225af35a9686d7ef0c47
|
|
| BLAKE2b-256 |
3829f911b1f7dc503592f94b77ee17ce781872eb8a6c113ce7162f1e4b4eac92
|
File details
Details for the file uvenv-3.9.1-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e1f5d1f51976dcd0e54a09d5bc0ed30e5910133bb0c57db02ad0a177ec3e7c2
|
|
| MD5 |
6137ff1749d8874f170742b38700478c
|
|
| BLAKE2b-256 |
f7739ac0835a05d9fc8a42517dd19af0aa8296abe436a99e6e8a4ab6354d19ba
|
File details
Details for the file uvenv-3.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35490cea6924ff0863b9c6f9de83e86913f11c820f698fde9efe2c9978c763ca
|
|
| MD5 |
d6965aa341a0f4d88b96e2d75d599d12
|
|
| BLAKE2b-256 |
b12872507aed422f04992026099d4c333fa18c0358e4dd74624c55a845a36285
|
File details
Details for the file uvenv-3.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5146c211c65c9856073c4df6c8b8d392448fe96b3397e44f2af0d65e9c25303
|
|
| MD5 |
d112582dc7f571b6d110d379069835b7
|
|
| BLAKE2b-256 |
5877ed31bd336cb04806d8b4724272c4f47315bb91f8702acb5f3faa3ddbe322
|
File details
Details for the file uvenv-3.9.1-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.9 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75b9ae6f4b92a4b6d1ddf73e4367d63b6c8fb8fc833c1c5504765a3821a80b2d
|
|
| MD5 |
9071e06e167c0ad5f4a86ce38b0b5245
|
|
| BLAKE2b-256 |
439c2043140b0c50f6338fdcc25185bf3958653f7834847c03f75baa9e8dc513
|
File details
Details for the file uvenv-3.9.1-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: uvenv-3.9.1-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
261e238d1ec6cc600ad808a444e4b214aa23a5e689954f26aa4e82f1d79cb4bf
|
|
| MD5 |
bf9a3c0d2e34d49bff12429db577a4b5
|
|
| BLAKE2b-256 |
5f178234df6d7d172b84883c9366df3c0fba654a7938ed6907016691d29f1c07
|