I have `pyvenv-tracking-mode` set to `t`. I use `pyvenv-workon` via `.dir-locals.el`. I have: ``` +- proj_a | +- a.py | `- .dir-locals.el `- proj_b +- a.py `- .dir-locals.el ``` ``` sh % lsvirtualenv proj_a ====== proj_b ====== ``` ``` lisp ;; proj_a/.dir_locals.el ( (python-mode (eval pyvenv-workon "proj_a")) ) ``` ``` lisp ;; proj_b/.dir_locals.el ( (python-mode (eval pyvenv-workon "proj_b")) ) ``` I open `…/proj_a/a.py` and `(pyvenv-workon "proj_a")` is invoked for that buffer (`M-x getenv PATH` concurs). Next, I open `…/proj_b/b.py` and `(pyvenv-workon "proj_b")` is invoked for that buffer (again, `M-x getenv PATH` concurs). Now, I switch back to the already open buffer for `…/proj_a/a.py`. `M-x getenv PATH` still shows that `proj_b` is the active virtual environment. https://github.com/jorgenschaefer/pyvenv/issues/80#issuecomment-429231820 is vague. It suggests `pyvenv-tracking-mode` can be used, but fails to explain how.