Skip to main content

Wrapper script for Python's venv

Project description

venvwrapper

Version on Pypi

venvwrapper is a Python package that provides commands that make it easier to manage Python virtual environments that are based on the venv package from the Python standard library.

Basically, venvwrapper is to venv what virtualenvwrapper is to virtualenv: It provides more convenient commands to make the management of virtual environments easier. However, virtualenv supports only a subset of the functionality of virtualenvwrapper.

venvwrapper combines nicely with virtualenvwrapper: The virtual environments created by both packages can reside in the same directory side by side, regardless which of the two created them. That allows you to gradually convert your existing virtualenv/virtualenvwrapper based environments to be based on venv.

Since Python 3.5, venv is the recommended tool for Python virtual environments, as stated in Creating virtual environments:

The use of venv is now recommended for creating virtual environments.

Also note this tweet by the BDFL on the topic:

I use venv (in the stdlib) and a bunch of shell aliases to quickly switch.

Supported shells

At this point, venvwrapper supports bash and zsh. More shells may work, but not with tab completion.

Contributions to add support for more shells are welcome!

Installation

  • Install the venvwrapper Python package into your default system Python 3 (i.e. with no virtual environment active):

    $ pip3 install --break-system-packages venvwrapper
    

    This installs the venvwrapper.sh script so that it is available in the PATH.

    Note that this Python package has no Python dependencies, so it does not break your system Python in any way.

  • Verify that venvwrapper.sh is available in the PATH:

    $ which venvwrapper.sh
    /opt/homebrew/bin/venvwrapper.sh
    
  • Add the following to your shell startup script (e.g. ~/.bash_profile or ~/.zshrc) in a place where no Python virtual environment is active:

    # VENV_HOME=$HOME/.venv
    venv_wrapper=$(which venvwrapper.sh)
    if [[ -n $venv_wrapper ]]; then
        source $venv_wrapper
    fi
    

    VENV_HOME specifies the directory under which the directories for the virtual environments are created. If not set, it defaults to $HOME/.venv.

    VENV_HOME can be set to the same directory that is used for virtualenvwrapper (i.e. its WORKON_HOME directory).

  • Verify the installation by starting a new terminal session, and invoking:

    $ mkvenv --help
    

    This should display the help:

    mkvenv - Create and activate a new Python virtual environment
    
    Usage: mkvenv ENV [PYTHON]
    
    Where:
      ENV      Name of the new virtual environment
      PYTHON   Python command to use for creation. Default: python3
    

Usage

All commands provided by venvwrapper explain their usage when called with -h or --help:

  • venv - activate an existing virtual environment
  • mkvenv - create and activate a new virtual environment
  • rmvenv - remove one or more virtual environments
  • lsvenv - list existing virtual environments

The venv and rmvenv commands support tab completion.

The standard deactivate script provided by the virtual environment is used to deactivate the current virtual environment.

An active virtual environment is indicated by an (env) prefix in the command prompt. That is the normal behavior of venv.

The commands provided by venvwrapper are actually shell functions, so they cannot be used in other scripts. If you need to activate virtual environments in other scripts, call the activate script provided by the virtual environment.

If venvwrapper is configured to use the same directory for its virtual environments as virtualenv/virtualenvwrapper, then the commands that operate on existing virtual environments can be used on either kind of virtual environment, regardless of which package created it. For example, lsvenv will list both kinds of virtual environments.

Development and contributions

The venvwrapper project welcomes contributions.

For how to set up a development environment, see DEVELOP.md.

References

The venvwrapper.sh script provided in this package is based on the script by Ismail Demirbilek at https://gist.github.com/dbtek/fb2ddccb18f0cf63a654ea2cc94c8f19.

Project details


Download files

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

Source Distribution

venvwrapper-0.8.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

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

venvwrapper-0.8.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file venvwrapper-0.8.0.tar.gz.

File metadata

  • Download URL: venvwrapper-0.8.0.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for venvwrapper-0.8.0.tar.gz
Algorithm Hash digest
SHA256 dd0dd32e7acfc16545d9f5cd7f9251e13bc7c66b9ebb20be91980652e6759358
MD5 62c63aec36ce3c30c7edbe2cd56f40bf
BLAKE2b-256 e589fce0ca8cca3dc946c98ce3b31ae41d66f24473963912f7abfbcc784b6503

See more details on using hashes here.

Provenance

The following attestation bundles were made for venvwrapper-0.8.0.tar.gz:

Publisher: publish.yml on andy-maier/venvwrapper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file venvwrapper-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: venvwrapper-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for venvwrapper-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1873120ff373cc44c51434ea08558c8b1c48dfa7def6f7b3a2fb7468ed25570
MD5 56753017fab5e50efe5d7108fbf86154
BLAKE2b-256 a4a84909f3b8baeede18921fc0d0b2aa621838ee33aa1f716d3061c85bc60f70

See more details on using hashes here.

Provenance

The following attestation bundles were made for venvwrapper-0.8.0-py3-none-any.whl:

Publisher: publish.yml on andy-maier/venvwrapper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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