Add PYTHON_AUTO_VRUN_RECURSIVE option to search parent directories for virtual environments, useful for monorepos where venv is at project root but you work in subdirectories.
2.8 KiB
Python plugin
The plugin adds several aliases for useful Python commands.
To use it, add python to the plugins array in your zshrc file:
plugins=(... python)
Aliases
| Command | Description |
|---|---|
py |
Runs python3. Only set if py is not installed. |
pyfind |
Finds .py files recursively in the current directory |
pyclean [dirs] |
Deletes byte-code and cache files from a list of directories or the current one |
pygrep <text> |
Looks for text in *.py files in the current directory, recursively |
pyuserpaths |
Add user site-packages folders to PYTHONPATH, for Python 2 and 3 |
pyserver |
Starts an HTTP server on the current directory (use --directory for a different one) |
Virtual environments
The plugin provides three utilities to manage Python 3.3+ venv virtual environments:
-
mkv [name]: make a new virtual environment callednamein the current directory. Default:$PYTHON_VENV_NAMEif set, otherwisevenv. -
vrun [name]: activate the virtual environment callednamein the current directory. Default: the first existing in$PYTHON_VENV_NAMES. -
auto_vrun: automatically activate the venv virtual environment when entering a directory containing<venv-name>/bin/activate, and automatically deactivate it when navigating out of it (keeps venv activated in subdirectories).- To enable the feature, set
PYTHON_AUTO_VRUN=truebefore sourcing oh-my-zsh. - To also search parent directories (useful for monorepos), set
PYTHON_AUTO_VRUN_RECURSIVE=trueas well. - The plugin activates the first existing virtual environment, in order, appearing in
$PYTHON_VENV_NAMES. The default virtual environment name isvenv. To use a different name, setPYTHON_VENV_NAME=<venv-name>. For example:PYTHON_VENV_NAME=".venv"
- To enable the feature, set
Settings
You can set these variables in your .zshrc file, before Oh My Zsh is sourced.
For example:
PYTHON_VENV_NAME=".venv"
PYTHON_VENV_NAMES=($PYTHON_VENV_NAME venv)
...
plugins=(... python)
source "$ZSH/oh-my-zsh.sh"
$PYTHON_VENV_NAME
Default: venv.
Preferred name for virtual environments, for example when creating via mkv.
$PYTHON_VENV_NAMES
Default: $PYTHON_VENV_NAME venv .venv.
Array of virtual environment names to be checked, in order, by vrun and auto_vrun.
This means these functions will load the first existing virtual environment in this list.
Duplicate names are ignored.