Another (and, IMHO, the best) option is to lean on the excellent direnv tool. direnv
supports Python virtualenvs trivially, all you need to do is put this in the directory's .envrc
:
. bin/activate
On the Emacs side, I've been using the envrc package for several years now and it's excellent. Works with Tramp too!