Skip to content

Instantly share code, notes, and snippets.

@pithyless
Created September 10, 2011 21:49
Star You must be signed in to star a gist
Save pithyless/1208841 to your computer and use it in GitHub Desktop.
Install Python 2.7 (homebrew + pip + virtualenv) on Mac OS X Lion

Install Python

$ brew install readline sqlite gdbm
$ brew install python --universal --framework
$ python --version
Python 2.7

Symlinks...

$ mkdir ~/Frameworks
$ ln -s "/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework" ~/Frameworks
$ /usr/local/share/python/easy_install pip
$ /usr/local/share/python/pip install --upgrade distribute

Add to .bashrc:

# Before other PATHs...
PATH=${PATH}:/usr/local/share/python

# Python
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
if [[ -r /usr/local/share/python/virtualenvwrapper.sh ]]; then
    source /usr/local/share/python/virtualenvwrapper.sh
else
    echo "WARNING: Can't find virtualenvwrapper.sh"
fi

Install virtualenv

$ pip install virtualenv 
$ pip install virtualenvwrapper

Test setup

$ mkvirtualenv test 
$ rmvirtualenv test
@erasmospunk
Copy link

Hi,

Is there a reason you put PATH=${PATH}:/usr/local/share/python instead of PATH=/usr/local/share/python:${PATH} ?

Thanks!

@pithyless
Copy link
Author

Hmmmm... I can't recall any reason this would be. It looks like a typo. (I don't have my MacBook around to verify)

@erasmospunk
Copy link

So with these steps I get the virtualenv running with py2.7.3 but in the normal command line I get the system's py2.7.1...

To have the latest python in normal enviroment I have this in .bashrc (that is loaded from .bash_profile):
PATH=/usr/local/share/python:/usr/local/bin/:${PATH}

@joe--
Copy link

joe-- commented Nov 14, 2012

This was super helpful :)

@johnhaitas
Copy link

changing
brew install readline sqlite gdbm
to
brew install readline sqlite gdbm --universal
helped me

@benguillet
Copy link

Same than @johnhaitas, add to add the --universal for the install of readline sqlite and gdbm

@skull-squadron
Copy link

Helpful 👍

@newtoncalegari
Copy link

I had to add the --universal for the install the sqlite and gdbm because when I tried to install python it showed this error:

Error: python dependency sqlite not installed with:
    --universal

@bigfolio
Copy link

bigfolio commented Jul 2, 2013

I get a:

WARNING: Can't find virtualenvwrapper.sh

From the .bashrc

@sbrieuc
Copy link

sbrieuc commented Aug 6, 2013

I had to change from:

    if [[ -r /usr/local/share/python/virtualenvwrapper.sh ]]; then
        source /usr/local/share/python/virtualenvwrapper.sh

to

    if [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then
        source /usr/local/bin/virtualenvwrapper.sh

to make it work, because virtualenvwrapper.sh got installed there.

@the-shank
Copy link

Thanks for this.

Just wanted to point out that I had to do this

brew install readline sqlite gdbm --universal

to get it to work

@mistydemeo
Copy link

$ brew install python --universal --framework

Homebrew already does dependency resolution - no need for this line!

@shurane
Copy link

shurane commented Feb 13, 2014

A lot has changed in homebrew and these instructions are out of date. brew install --universal should take care of most of your problems. Also take a look at brew info python for installation instructions.

@bdejong
Copy link

bdejong commented Sep 3, 2014

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7
if [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then
    source /usr/local/bin/virtualenvwrapper.sh
else
    echo "WARNING: Can't find virtualenvwrapper.sh"
fi

Also seems to be more recent...

@huanghaihui
Copy link

After install python, I find easy_install, virtualenvwrapper.sh and so on in /usr/local/bin not in /usr/local/share/python. just like bdejong shows above.

@yodaqua
Copy link

yodaqua commented Apr 15, 2017

still useful, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment