Skip to main content

Automatically activate, and deactivate virutal environments when entering or leaving directories.

Project description

Venver

Automatically activate, and deactivate virutal environments when entering or leaving directories.

Installation

bash

  1. Install the venver package. This can be in a virtual environment.

    mkdir -p "${HOME}/.local/bin/venver"
    cd "${HOME}/.local/bin/venver"
    python -m venv .venv
    pip --python ./.venv/bin/python install venver
  2. Add this to the bottom of your .bashrc.

    venver() {
       eval "$("${HOME}/.local/bin/venver/.venv/bin/venver")"
    }
    
    PROMPT_COMMAND="venver;${PROMPT_COMMAND}"

Usage

Let’s assume you have a python project with a virtual environment like this:

~/
├─ myapp/
│  ├─ .venv/
│  │   ...
│  ├─ src/
│  │   ...
│  ├─ .gitignore
│  ├─ pyproject.toml
│  ├─ README.rst

Add a .venver file to the project root.

cd ~/myapp
echo './.venv' > .venver
~/
├─ myapp/
│  ├─ .venv/
│  │   ...
│  ├─ src/
│  │   ...
│  ├─ .gitignore
│  ├─ .venver
│  ├─ pyproject.toml
│  ├─ README.rst

Navigating anywhere inside the myapp directory will result in the environment at myapp/.venv being activated. And navigating outside of myapp will deactivate the environment.

~ $ cd myapp
~/myapp (.venv) $ cd src
~/myapp/src (.venv) $ cd ~
~ $ cd myapp/src
~/myapp/src (.venv) $

If you manually deactivate the environment, it won’t be automatically activated again until you navigate outside of myapp, then reenter it.

~ $ cd myapp
~/myapp (.venv) $ deactivate
~/myapp $ cd src
~/myapp/src $ cd ~
~ $ cd myapp
~/myapp (.venv) $

You may specify an environment that isn’t in the project directory. This is useful if you have environments you want to reuse. The activation, and deactivation will still be relative to the .venver directory, and not the environment directory.

~/
├─ venvs/
│  ├─ web-venv/
│  │   ...
│  ├─ console-venv/
│  │   ...
cd ~/myapp
echo '~/venvs/web-venv' > .venver
~ $ cd myapp
~/myapp (web-venv) $ cd src
~/myapp/src (web-venv) $ cd ~
~ $ cd myapp/src
~/myapp/src (web-venv) $

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

venver-0.3.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

venver-0.3.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file venver-0.3.0.tar.gz.

File metadata

  • Download URL: venver-0.3.0.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for venver-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e906fb91a14c968b84c156d7279cda5cd233bc7e2d0cdcf737c1124c79cbb194
MD5 8c8bd9d41160622470704aa7e34124e3
BLAKE2b-256 3bdb8f3af673ead925d565a05f7446ab05ad9bbd3989457eb18afd33d44de884

See more details on using hashes here.

File details

Details for the file venver-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: venver-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for venver-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5c65cd775d63c69ee7288ddab50f93b838e401d0e275cf7b3c1d57c0300b79c
MD5 0873ae2cc830eff206bb6e1a383b8394
BLAKE2b-256 73a20427ff6a061c83f0a9c2af3f20206f32975e922cf78e4d40b41c448f93c5

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