Install virtualenv and virtualenvwrapper on MacOS
To install virtualenv
and virtualenvwrapper
for repetitive use you need a correctly configured Python
(this example uses Python 3.x
but process is identical for Python 2.x
).
Although you can get python
installer from Python website I strongly advice 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:
/Library/Frameworks/Python.framework/Versions/3.x
Brew
on the other hand installs Python
, Pip
& Setuptools
and puts everything to:
/usr/local/bin/python3.x/site-packages
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 https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 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 called 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/virtualenvwrapper.sh
Restart your terminal. You should be able to use mkvirtualenv
and workon
commands including autocompletion.
Here's a little tip on how to create virtualenv with specific version of Python.
In case you are using
MacOS Mojave
and you are installingPython3.6
from brew bottle you might have a problem withpip
, here's a solution that might help.
With time some of you may want to install multiple Python
versions with multiple virtual environments per version. When this moment comes I strongly recommend swithing to pyenv and pyenv-virtualenv .
I'm running macOS 10.15.7
I followed official docs until here
and change it to
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
# export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.8/bin/virtualenv
# source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/3.8/bin/virtualenvwrapper.sh
in your case try to run which virtualenv
or which python
to get exact paths
Mac Big Sur Python 3.8
installation
pip3 install virtualenv virtualenvwrapper
or
pip3 install virtualenv virtualenvwrapper --user
create directoty in your Home
mkdir .virtualenvs
edit profile
vi .bash_profile
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV=/Users/{your_user}/Library/Python/3.8/bin/virtualenv
source /Users/{home_directory}/Library/Python/3.8/bin/virtualenvwrapper.sh
- check path with 'which' command or 'find':
Reload .bash_profile
source ~/.bash_profile
If you are using MacOS
1.
Install virtualenvwrapper
pip3 install virtualenvwrapper
2.
Create the "virtualenvs" folder
mkdir ~/.virtualenvs
3.
Before you export this, make sure you are doing it in your project folder, because that's where you will activate the virtualenv
Export
export WORKON_HOME=$HOME/.virtualenvs
next, write down in terminal which python3
, to find the path and add it after the "=" sign
export VIRTUALENVWRAPPER_PYTHON=
in my case:
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
to find the virtualenv path write in the terminal which virtualenv
add the path after the "=" sign
export VIRTUALENVWRAPPER_VIRTUALENV=
in my case:
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.9/bin/virtualenv
4.
Last step is to add the source in the terminal
almost the same as the path you got when writing which virtualenv
The difference is the "wrapper.sh" in the end.
in my case
source /Library/Frameworks/Python.framework/Versions/3.9/bin/virtualenvwrapper.sh
5.
Now you can create the virtualenv name by doing the following:
mkvirtualenv nameOfTheVirtualEnviroment
in my case
mkvirtualenv venv
On this Mozila page you can learn how to use it