In the category of “things that ought to work, but do not”: there is a
pyenv integration for the fish shell, but it just yells at you:
$ pyenv activate env-name pyenv-virtualenv: prompt changing not working for fish.
Though this is very sad, I assume this is because
pyenv — a command, not a function — can’t alter the current environment, a function is required. I added this code to my fish config:
function pyact set -l env_name $argv source (psub < $PYENV_ROOT/versions/$env_name/bin/activate.fish) end # auto-complete for above; picks up new virtualenvs when you start a new shell for ve_name in (find $PYENV_ROOT/versions -type l -depth 1) complete -c pyact -f -a (basename $ve_name) end
Now tab-completion works for the existing virutalenvs:
$ pyact <tab> ansible def dps