Lots of other threads about similar issues, but none that I could find where quite the same case as mine. So, here goes:
Things I did:
Got this error after recently (summer 2017) updating Homebrew and python. The issue in my case was that Homebrew no longer overwrites the system python and I didn't have virtualenv
and virtualenvwrapper
installed for the system python.
The solution in my case was to add the following to ~/.bash_profile
(or ~/.zshrc
):
export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"
This made python
point to the brew version of python and also gave me pip
back. This version of python
had virtualenv
and virtualenvwrapper
installed so the error no longer appeared. See the caveats section under brew info python
and https://github.com/Homebrew/homebrew-core/issues/15746 for more information
I had the same problem setting up virtualenvwrapper on ubuntu.
I had installed virtualenv, virtualenvwrapper using pip which installed these modules in the site package of python3.5. How did I find that out?
Open your terminal and type
$ pip --version
pip 9.0.1 from /home/clyton/.virtualenvs/test1/lib/python3.5/site-packages (python 3.5)
Then I checked the variable VIRTUALENVWRAPPER_PYTHON
whose value was
/usr/bin/python.
On your terminal and type
$ ls -l $VIRTUALENVWRAPPER_PYTHON
lrwxrwxrwx 1 root root 9 Dec 10 2015 **/usr/bin/python -> python2.7**
As you can see this variable is pointing to python2.7 and you may have installed virtualenv in a different python site package.
So to fix this problem, just add the below line in your bashrc
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5
NOTE: Set the above value to the python version with which virtualenv was installed. In my case it was python3.5 so I have set that value. How to find out the python version used to install virtualenv? Again type pip --version
in the terminal.
Then open a new shell session and try mkvirtualenv again. This time it should work.
try installing virtualenv and virtualenvwrapper with pip2 install virtualenv virtualenvwrapper
. it seems like pip install virtualenv and it's wrapper to python 3 as it's default
In my case, adding this line into my .zshrc file did the trick,
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
remember to source ~/.zshrc to update the change to your current terminal.
I realize this thread is super old but I got stuck on it while trying to find a solution to this problem (using pip3
but you can swap pip
as necessary).
I ended up using a modified version of a solution that I found in another post here.
Add the following to your .zshrc
/.bashrc
:
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
I had to add
local
in the above but guessing that whether or not you need to do so will depend on your installation. I realized I was referencing the wrong location because I was getting this error:zsh: no such file or directory: /usr/bin/python3
so I just didwhich python3
to see where it lived.
Make sure you uninstall any existing versions of virtualenv
and virtualenvwrapper
as you can not simply install to a new location with an existing version on your machine, you must delete the old version and then install the new version in the new location.
To install:
sudo /usr/local/bin/pip3 install virtualenv virtualenvwrapper
And, as per this post, you should be able to create a virtual environment with your version of python3 using this command:
mkvirtualenv --python=
which python3 nameOfEnvironment
If you take a look at the virtualenvwrapper.sh script, you will find these lines:
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ]
then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
If you don't manually export VIRTUALENVWRAPPER
appropriately for your version of python, it will assume the system default where you don't have the virtualenvwrapper package installed.
I fixed this like so:
echo "export VIRTUALENVWRAPPER_PYTHON=$(which python3.6)" >> ~/.zshrc
This is all documented on the official website here.