Install and import site-packages for Python 2 and 3 on Mac
I installed brew
and then
brew install python
brew install python3
Install flask
with pip
pip install flask
Try
python -c 'import flask'
But I got exception
ImportError: No module named flask
Set and export PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
So far so good. But when I tried to install a package with pip3
for Python 3, I got error message
Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
PYTHONPATH is currently: ":/usr/local/lib/python2.7/site-packages"
You should `unset PYTHONPATH` to fix this.
How to use site-packages without the PYTHONPATH
trick to make both pip
and pip3
usable and both Python 2 and Python 3 able to import site-packages?
You should consider install pyenv for this.
pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.
To install, just type:
$ brew install pyenv
Add this to your .bash_profile
:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Once installed use pyenv
to install python versions you need:
$ pyenv install -l/--list --> List all available versions
$ pyenv install 2.7.6
$ pyenv install 3.3.3
Run this command after you install a python version:
$ pyenv rehash
You can specify multiple versions via PYENV_VERSION
at once. Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3,
$ pyenv shell 2.7.6 3.3.3
$ pyenv versions
system
* 2.7.6 (set by PYENV_VERSION environment variable)
* 3.3.3 (set by PYENV_VERSION environment variable)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
To use both Python 2 and Python 3 on OS X, one should avoid using the Mac pre-installed python.
-
Install python with homebrew:
brew install python brew install python3
-
Edit
/etc/paths
:/usr/local/bin /usr/bin /bin /usr/local/sbin /usr/sbin /sbin
Make sure /usr/local/bin
comes before /usr/bin
. The former is use by homebrew and the latter is where the Mac pre-installed python executable lives. Show your PATH
for a double check:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/X11/bin
Now I can install packages with pip2 and pip3 for 2 versions of Python separately.