I've used homebrew to install python on a new Mac Lion installation, and have been trying to install virtualenv and virtualenvwrapper with pip, but when I start a new terminal session, I get this traceback:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenv has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.
The python and pip used are from homebrew, but it seems to want me to use Apple's default python. I get the following
~$ which python | xargs ls -l
lrwxr-xr-x 1 beard admin 33 Jun 24 16:11 /usr/local/bin/python -> ../Cellar/python/2.7.3/bin/python
~$ echo $VIRTUALENVWRAPPER_PYTHON
/usr/local/bin/python
~$ which pip | xargs ls -l
-rwxr-xr-x 1 beard admin 301 Jun 24 16:18 /usr/local/share/python/pip
~$ which virtualenvwrapper.sh | xargs ls -l
-rwxr-xr-x 1 beard admin 32227 Jun 24 16:19 /usr/local/share/python/virtualenvwrapper.sh
However, it seems to think that I've installed pip (and virtualenv) with the system python in /usr/bin/python
Edit: In my bashrc--
export WORKON_HOME="$HOME/py-env"
export VIRTUALENVWRAPPER_LOG_DIR="$HOME/py-env"
export VIRTUALENVWRAPPER_HOOK_DIR="$HOME/py-env"
source /usr/local/share/python/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_PYTHON="/usr/local/bin/python"
Since you have your own version of python, have you tried overriding VIRTUALENVWRAPPER_PYTHON? (It looks like you want export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
) The virtualenvwrapper docs suggest setting that envvar to the desired python before sourcing virtualenvwrapper.sh. Their example has:
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
Add or change path into ~/.bash_profile for virtualenvwrapper.sh
to /usr/local/share/python/virtualenvwrapper.sh
it should look like
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/share/python/virtualenvwrapper.sh
I ran into similar problems with Hombrew-installed Python conflicting with the system-installed Python under OS X Lion. I was never able to correct the problem using Homebrew. However, when I switched to using pythonbrew (https://github.com/utahta/pythonbrew) to manage my installed Pythons (instead of Homebrew), I was able to run virtualenvwrapper successfully.
If your using PythonBrew & VirtualEnvBurrito with ZSH shell, make sure you check out your .zprofile - this contains some commands to execute the VirtualEnvBurrito startup script. As .zprofile is loaded before .zshrc the Python version is the system one. This will also throw up this error.
I was facing similar issues on macOS Catalina. It ships with zsh & python 2.7
With the following steps I installed python3 and virtual env,
Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Install python
brew install python
Check where python is installed
brew show python
Squashed output,
==> Caveats
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.7/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
Default python path on macOS is /usr/bin/python
which points to Python 2.7. So we need to create an alias from python to python3
alias python=/usr/local/bin/python3
And then follow the steps as mentioned by @munchybunch above,
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Following the steps above, I was able to create a virtual env,
mkvirtualenv dev