Skip to main content

uvenv: pipx for uv (🦀)

Project description

uvenv: pipx for uv

pypi wheels snapcraft

Inspired by:

Installation

New: uvenv is now also installable via the snap store.
The pip method is still recommended, but if you want to use snap, please check out docs/snap.md!

  1. 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 uvenv for these systems is to use the install.sh script:

$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.
  1. Optional (for bash users):

    uvenv setup
    

    This installs the following features:

  • Ensures ~/.local/bin/ is added to your PATH, so commands can be found (unless --skip-ensurepath). Can also be activated via uvenv ensurepath
  • Enables tab completion for uvenv (unless --skip-completions). Can also be enabled via uvenv 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 uvx is now uvenv due to a naming collision with a new uv command. The new name better reflects its purpose, combining uv with venv.
You can run uvenv self migrate to move your environments and installed commands from uvx to uvenv.

Platform Considerations

  • Rust-Powered Performance (uvenv 2.0): Starting from version 2.0, uvenv leverages Rust for improved performance and compatibility with uv.
  • 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 uvenv repo 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 uvenv binary:
      maturin develop
      
    • Now you can use uvenv:
      ./venv/bin/uvenv
      

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

This version

3.9.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uvenv-3.9.2.tar.gz (94.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uvenv-3.9.2-py3-none-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

uvenv-3.9.2-py3-none-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

uvenv-3.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uvenv-3.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

uvenv-3.9.2-py3-none-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uvenv-3.9.2-py3-none-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file uvenv-3.9.2.tar.gz.

File metadata

  • Download URL: uvenv-3.9.2.tar.gz
  • Upload date:
  • Size: 94.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for uvenv-3.9.2.tar.gz
Algorithm Hash digest
SHA256 77267bb14aca243166912d37341dbca7e8e076ae7555f6e1a427c88e5ebf7ec8
MD5 6c2ddcc281e66ec24960d3790a1828a8
BLAKE2b-256 074ca467c407b53bc6e37d37677c7fe82385273b4a86d431bbf1004f5ebc0895

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a75d80bdbc78c72607308918c5c9e321df1dd9526f363985a47dd5001b19a3ca
MD5 4ae2152dcd51920154fd128e69e5184d
BLAKE2b-256 ebbb198b1865c567e2f9e762aab7c3bbbcc50efd53d89a78f39a7546d9bf240d

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1a54400ab8786a409c713d5670baa42b0c68f62dc1a965c465af9e57c15d802c
MD5 08ae6205cc88fadd266b281d95836652
BLAKE2b-256 fc41e62320fa386ecf98e284def3ccf1732734e7d260ffc47bbcafff79d475fc

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7707d61eb52bd819ae419cc4aefc79b96e9161c10edf2c005cc336991ebfb7f8
MD5 a39ce523eff4af362481393261076334
BLAKE2b-256 9784668c78c850afd0635e9311ac5015b55691def69819d93b3a5ca06f553835

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f3e07c6d2296be5f157b9787f8c80a6f6857354ed28c007f74d2217f42e12e7
MD5 102230f8d84bdb8ec565c977460031d6
BLAKE2b-256 fb9d262f3e4f5c9fbb0be7a55c20b2b913d8541cb08f2f89b39e5033efa43e7a

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a171c275f918924f86ef54ba7deb415ee622dcff6e42fd01d20a7ca5179827c6
MD5 e9024fd9456bc7ebc8831f53f99beb92
BLAKE2b-256 43bb2575b52feb9a64f5eacc8893291af68d234d196a732eabfc29bf5c552f6e

See more details on using hashes here.

File details

Details for the file uvenv-3.9.2-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for uvenv-3.9.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0465ad87e3c23f2e1a0514cb452c0d2e730e775cb36a804f4163172fe99ae136
MD5 42bceaadee7a83a5cec88bf3e6962da1
BLAKE2b-256 b5667703890eef10f2479d18fc5abe00d69f1c0b97aa2940091dd22f96642c34

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page