Alternatively, pyenv and pyenv-virtualenv for shell integration and seamless virtualenv activation.
To be fair, I'm not saying there's anything wrong with virtualenvwrapper, just that I've never used it and for my purposes the above solution works well.