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:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/robinvandernoord/uvenv/uvenv/install.sh)"

For more installation alternatives, see 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

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

uvenv-3.8.2-py3-none-musllinux_1_2_aarch64.whl (4.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

uvenv-3.8.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uvenv-3.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

uvenv-3.8.2-py3-none-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for uvenv-3.8.2.tar.gz
Algorithm Hash digest
SHA256 cd1c5fcd0ec3ef804a56b38a0be1960caa384d8568a1698183efd70122d415f0
MD5 7c58f66f701dbbd866c495081ed7d485
BLAKE2b-256 f5fdf460d6a17f0faa3cde96cf6bb37c016039bc287a95acffe86a3832170e0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 050640ac17f97f02a3a9279b5f22822b203f4f18818df35dfb10cd3fd30420fb
MD5 b86c7cbacdce3e6aecc5a48c3ed5073f
BLAKE2b-256 bef4d6525050941febf51ad029140a2bb3c37c2b6f8187c91d4e1d70faa428d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 175b1e2a409dd39044d1f5e6ae16a2569005696ad871b717ee97c1a7060dcc78
MD5 b28e87c574267754f3faf714c0de938f
BLAKE2b-256 88d65e137875e190ac156043c25ac93d4d2e3416ad93e6ca01a4aa2ad117e43b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f36c74add1a2be649c00cbaa7f9d6e0cd9b8d72ef17911f3c614c17aa63f528a
MD5 892a6453e570b130c908cc026ff0e0d1
BLAKE2b-256 b713959f0a3427e569f5d88ef17d5187e5f1cbd7982a660b987a099b842e5af9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 84dba0af1c1a30ecc9942f41fda4c602afece115e6c03e3d592287f04b6d469c
MD5 7b1c787759f43208fde17dd0fb3ae054
BLAKE2b-256 d79a64601de337f51cf8b26c4aa7cea3fc278104d3ec063049c3ea64ff32dd47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea3fc6b42747b6c095a563af7109b26847ec98f141234b5cd3c56f6752886510
MD5 1585a914e194278fe705ba8d4e2f95c8
BLAKE2b-256 e385d11b3cf9bd43c0e494c82d5a49940cdef8363aef97095242f0256871f4d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for uvenv-3.8.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 99b196fd6061d057d2b97b2e7a7f989173450b8e4a06da97239fd081b7905b40
MD5 e3e640439245704d0c139cdd4dfb9510
BLAKE2b-256 2afcace0a357e647995ad6fd553853a95853eb5bf979b267a8517de68760c0b5

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