61

How to install and configure virtualenv and virtualenvwrapper for Python on MacOS?

0

9 Answers 9

132

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

  1. 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)"
  1. 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.

  1. 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
  1. 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 for installed packages to work correctly:

# 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 installing Python3.6 from brew bottle you might have a problem with pip, 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 .

Sign up to request clarification or add additional context in comments.

8 Comments

Perfect solution and explanation. I initially installed Python 3.6 using the installer but found that to be a huge headache - would recommend using Homebrew as well.
It seems that brew-installed python3 may not put Python packages where this answer expects. From my brew install python I got: ``` ... You can install Python packages with pip3 install <package> They will install into the site-package directory /usr/local/lib/python3.8/site-packages ... ```
@Michael I didn't think someone will be checking full path to site packages, so in regards to your comment I've concatenated missing part of path where packages are installed.
For big sur ``` export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/opt/homebrew/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV=/opt/homebrew/bin/virtualenv source /opt/homebrew/bin/virtualenvwrapper.sh ```
Help! How to uninstall python3 if installed via the python website? I have something confusing where I've installed both from the site and from brew. I see /Applications/Python 3.9 but no uninstaller.
|
18

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

3 Comments

~/ means home directory - /Users/{your_user} Its a hidden file so you may need to press the Option key while viewing in Mac in Finder.
.bash_profile is usually in home directory
This worked for me even now. Thanks for sharing this here.
13

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

Comments

9

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

4 Comments

Please comment, what's missing in my instruction.
MacOS 10.5.7 i was finding it difficult to find mkvirtualenv command. your instructions really helped. thanks.
my terminal gets killed when I type the source ... command at step4.
@AnumSheraz I don't know why it does that. It works for most people, but something is wrong for you. Are you using MacOS, or maybe the version you using might not work for this or something else.
2

I had many problems to install the virtualenvwrapper in my mac os (big sur) but after I spent my whole sunday on that I finally got it. What I did I do:

  1. I reinstalled python3 using the homebrew. For some reason homebrew put your files in a non conventional directories (for exemple: /opt/homebrew/bin/python3 or /opt/homebrew/bin/virtualenv)

  2. Than I installed the virtualenv (even its already installed in python3 by default) and I installed virtualenvwrapper in sudo mode: sudo pip3 install virtualenvwrapper (without sudo, I could't find the virtualenvwrapper.sh using whichvirtualenvwrapper).

  3. After that, in my home directory (/˜), I created the .bashrc file using touch .bashrc because this file didn't existed in my home directory.

  4. I used the command "which python3", "which virtualenv" and "which virtualenvwrapper.sh" to get the localization of them (it's important to get these location to fill the .bashrc file later). The result was:

    • /opt/homebrew/bin/python3
    • /opt/homebrew/bin/virtualenv
    • /opt/homebrew/bin/virtualenvwrapper.sh
  5. Than, using vim editor, I wrote in this file like this:

    export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel export VIRTUALENVWRAPPER_PYTHON=/opt/homebrew/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV=/opt/homebrew/bin/virtualenv source /opt/homebrew/bin/virtualenvwrapper.sh

  6. Than, I saved this file using :wq command and run it using this command: source .bashrc

  7. Than I testes using the writing "workon" command. It showed nothing so it worked

  8. Finally I create a virtual environment. It worked.

I made a lot of mistakes and I really hope I did't damage my OS.

Comments

1

The following solution worked for me. I have checked for the python path using which python3.8 in my MAC laptop with OS Big Sur (11.4)

/Users/apple/opt/anaconda3/bin/python3.8

Also checked for which virtualenvwrapper.sh

/Users/apple/opt/anaconda3/bin/virtualenvwrapper.sh

Updated my ~/.bash_profile with the above mentioned paths as shown below.

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/Users/apple/opt/anaconda3/bin/python3.8
source /Users/apple/opt/anaconda3/bin/virtualenvwrapper.sh

Then I was successfully able to source ~/.bash_profile.

Comments

1

this is my config running on Macbook M1

# Configuration for virtualenv
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 '
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11
export PATH="/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages:$PATH"

source /Library/Frameworks/Python.framework/Versions/3.11/bin/virtualenvwrapper.sh

Comments

0

this solution also works for version 11.1

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

Comments

-1

Stan's solution required different .bash_profile modification for me: (macOS Catalina & Python 3.6) Please make sure you change the version path from "..../3.6/..." to your version. You can use "which python3" command to find out python path and "which virtualenv" for virtualenv path

### BEGIN: for virtualenvwrapper #########################
# Setting PATH for Python 3 installed by brew
# commented the Python path because I have already had that, you might have too.
# PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3:${PATH}"
# export PATH
# Configuration for virtualenv
WORKON_HOME="${HOME}/.virtualenvs"
export WORKON_HOME

VIRTUALENVWRAPPER_PYTHON="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3"
export VIRTUALENVWRAPPER_PYTHON
VIRTUALENVWRAPPER_VIRTUALENV="/Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenv"
export VIRTUALENVWRAPPER_VIRTUALENV
source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh
### END: for virtualenvwrapper #########################

1 Comment

From the snippet you've provided it looks like you've installed python with installer rather then brew, so that's the reason you needed a different path to python executable.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.