Think “nice tidy boxes”, but not yet Docker.

Create a virtualenv

Let’s say you wanted to create a virtualenv for a new project using python3 called gutentag

 mkvirtualenv -p `which python` gutentag 

This command can be run from anywhere, though I tend to create a directory for the project in my $HOME/Developer/ directory with the same name as the virtualenv.

Delete a virtualenv

What if you no longer need a particular virtualenv? Use the rmvirtualenv command.

 rmvirtualenv gutentag 

List all current virtualenv

To output a list of existing virtualenv setups, use the lsvirtualenv following command, note the -b option for brevity.

 lsvirtualenv -b 

Installing mkvirtualenv

These steps are copy/pasted from this stackoverflow Post so that I can find them quickly.

To install virtualenv and virtualenvwrapper for repetitive use you need a correctly configured Python (this example uses Python 3.x but the process is identical for Python 2.x).

Although you can get the python installer from Python website I advise against it. The most convenient and future-proof method to install Python on MacOS is brew.

Main difference between installer from Python website and brew is that installer puts python packages to:


Brew on the other hand installs Python, Pip & Setuptools and puts everything to:


And though it may not make any difference to you now – it will later on.

Configuration steps

Install brew

Check out brew installation page or simply run this in your terminal:

/usr/bin/ruby -e "$(curl -fsSL"

Install Python

To install python with brew run:

 brew install python3 

Now your system needs to know where to look for freshly installed Python packages. Add this line to youre ~/.zshrc (or ~/.bash_profile if you’re using bash):

 export PATH=/usr/local/share/python:$PATH 

Restart your terminal. To make sure you’ve done everything correctly, run which python3 and in return you should receive /usr/local/bin/python.

Install virtualenv & virtualenvwrapper

Now it’s time to install virtualenv and virtualenvwrapper to be able to use workon command and switch between virtual environments. This is done using pip:

 pip3 install virtualenv virtualenvwrapper 

Set up virtualenv variables

Define a default path for your virtual environments. For example you can create a hidden directory inside ~ and call it .virtualenvs with mkdir ~/.virtualenvs. Add virtualenv variables to .zshrc (or .bash_profile).

Final version of your .zshrc (or .bash_profile) should contain this information to work properly with installed packages:

Setting PATH for Python 3 installed by brew

 export PATH=/usr/local/share/python:$PATH 

Configuration for virtualenv

 export WORKON_HOME=$HOME/.virtualenvs export
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 export
VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv source /usr/local/bin/

Restart your terminal

You should be able to use mkvirtualenv and workon commands including autocompletion.