mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-26 21:51:05 +01:00
feat(python): Auto-activate venv when cd'ing into directory
This commit is contained in:
parent
458fc2e1df
commit
d8eab422e1
2 changed files with 26 additions and 1 deletions
|
@ -22,8 +22,18 @@ plugins=(... python)
|
|||
|
||||
## Virtual environments
|
||||
|
||||
The plugin provides two utilities to manage Python venvs:
|
||||
The plugin provides three utilities to manage Python venvs:
|
||||
|
||||
- `mkv [name]`: make a new virtual environment called `name` (default: `venv`) in current directory.
|
||||
|
||||
- `vrun [name]`: activate virtual environment called `name` (default: `venv`) in current directory.
|
||||
|
||||
- `auto_vrun`: Automatically activate the venv virtual environment when
|
||||
cd’ing into a directory containing `venv/bin/activate`, and
|
||||
automatically deactivate the venv virtual environment when cd’ing into
|
||||
any other directory.
|
||||
- Set the environment variable `VENV_NAME` to auto-activate on a
|
||||
different venv name. (Example: `VENV_NAME=.venv`).
|
||||
- Set the environment variable `DISABLE_AUTO_VRUN` to anything to
|
||||
deactivate `auto_vrun`. (Example: `DISABLE_AUTO_VRUN=true`) Unset
|
||||
`DISABLE_AUTO_VRUN` to re-enable.
|
||||
|
|
|
@ -81,3 +81,18 @@ function mkv() {
|
|||
echo >&2 "Created venv in '${venvpath}'"
|
||||
vrun "${name}"
|
||||
}
|
||||
|
||||
# Virtual environment is assumed to be named "venv".
|
||||
# Set VENV_NAME to another name if you use a different name, maybe ".venv".
|
||||
# To disable, set DISABLE_AUTO_VRUN to anything. Unset to re-enable.
|
||||
auto_vrun() {
|
||||
[ $DISABLE_AUTO_VRUN ] && return 0
|
||||
local venvpath=${VENV_NAME:-'venv'}
|
||||
if [ -e "${venvpath}/bin/activate" ]; then
|
||||
source "${venvpath}/bin/activate" > /dev/null 2>&1
|
||||
else
|
||||
[ -n "$(command -v deactivate)" ] && deactivate > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
add-zsh-hook chpwd auto_vrun
|
||||
auto_vrun
|
||||
|
|
Loading…
Reference in a new issue