PYENV_DIR="${PYENVS_HOME:-${XDG_DATA_HOME:-$HOME/.local/share}/virtualenv}" function chpwd_activate(){ for pydir in $(ls $PYENV_DIR); do if [[ $(pwd|sed -e s@/@_@g) =~ "^$pydir$" ]]; then if [ "x$VIRTUAL_ENV" != "x$PYENV_DIR/$pydir" ]; then # echo "Activating virtual env $pydir" source "$PYENV_DIR/$pydir/bin/activate" return fi fi done if [ "x$VIRTUAL_ENV" != "x" ]; then # echo "Deactivating virtual env $VIRTUAL_ENV" deactivate fi } function venv-here(){ envdir=$(pwd|sed -e s@/@_@g) if [ ! -e "$PYENV_DIR/${envdir}" ]; then echo "Creating python venv for ${envdir}.." mkdir "$PYENV_DIR" -p python3 -m venv "$PYENV_DIR/${envdir}" echo "Activating virtual env ${envdir}" source "$PYENV_DIR/${envdir}/bin/activate" else echo "A venv for this path already exists" fi } autoload -U add-zsh-hook add-zsh-hook chpwd chpwd_activate