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.7

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.7.tar.gz (95.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.7-py3-none-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

uvenv-3.9.7-py3-none-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

uvenv-3.9.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uvenv-3.9.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

uvenv-3.9.7-py3-none-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uvenv-3.9.7-py3-none-macosx_10_12_x86_64.whl (4.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for uvenv-3.9.7.tar.gz
Algorithm Hash digest
SHA256 f8caf33e340958f13f137fa6c9264c0e6f62eb2c83e747238126ce2aced51632
MD5 33d50ece41db47260d6a31db08609b5c
BLAKE2b-256 f7fd6a0a0d553bf1009b75d678dfa0c8b4c673c97d7947ff161712b627d7281b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b38b620ed8187a45f1f26450618be3a93dda183a304775a756a5bb9f58416a96
MD5 057b264e4adc461a6efa220108ff43de
BLAKE2b-256 a37c47b71eb52a29867e0f3ee861a714b731732ffb53a2935db696156342399d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ca3c48d692ea61b3ca00c6f8f3d47b44d873dd7ba63bb96c3861c1b57d2dfbf5
MD5 329598e48bd226aaba6d4200a6bed3d6
BLAKE2b-256 0b847f2f80e6782f70ece089323ab25a6dadb5f16f7dbe85fe27ffced0cc7f42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72cbf23899ce46b1b33502cec034e91ee3b6055af7fab84d62cfa76d6307b258
MD5 439457ddbc744df44bcc3b5954841f78
BLAKE2b-256 1018d7e0f91633d651dfaf45742b9ea9db12934fc6dd8462fb9f3b436b5aa2fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c097ce415b0a6bce94b0e246d710ee4eab290128a593df449050e3c19497c5c6
MD5 149a936e2233cf024412748c99d04722
BLAKE2b-256 9267d4a1283d2c95080a6010cbfc30e119e6a514851cd6cab9ec712bdda47cce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71b93bb5995ee06619871f2efc504e179a8ae18de9ff5db061b1f3d0ea95cbac
MD5 238a66b49bb28353e9c88be8f2eb34b1
BLAKE2b-256 3eac062b51ac6bc158aedadde4039b5f993e5d7231073f83d386ede19e84d67e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.9.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 95178df3d52ef25f60f42027d41054e645a13f7bd866dd47ff35faeed325797a
MD5 83f8c5e5e1495fed9e58ba4a31b11aba
BLAKE2b-256 1dc5d56c9d6ad3e2fd3f107e32eebb591a685fcbbe39c28c4f08bab70af3a2ec

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