This guide assumes a fresh install of Mac OSX 10.6 Snow Leopard or 10.7 Lion.
Create the user "brew" with the Standardpassword. Open a console as brew or switch to the brew user using sudo su - brew
.
Install Xcode and the Command Line Tools from inside Xcodes Preferences. (You can use the App Store to install Xcode)
Follow https://github.com/mxcl/homebrew/wiki/installation to get the basic setup up and running. (the default, not the alternate installs)
On a completely fresh Lion install I had to use /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/1140207)"
for the initial install. This is a fork of the install script by @jacknagel that works around some permission issues. https://gist.github.com/1140207
Don't forget to install the requirements (Xcode, X11, Java Developer Update) mentioned in the installation guide.
See https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python and https://github.com/mxcl/homebrew/wiki/Gems%2C-Eggs-and-Perl-Modules for details.
the basics:
brew install python /usr/local/share/python/easy_install pip /usr/local/share/python/pip install --upgrade distribute
homebrew sets things up so that all packages installed via python setup.py install
, easy_install
or pip
get their commands installed to /usr/local/share/python/
by default (see the above link for an explanation). So the first rule of business is to add that path to your PATH
. Also if you want to use your homebrew python (and other homebrew stuff) by default, /usr/local/bin
should be all the way at the front of your PATH
.
~/.bash_profile
:
PATH=/usr/local/bin:/usr/local/share/python:$PATH export PATH
Note
remember to open a new terminal or call source ~/.bash_profile
in all of your open terminal windows to get PATH
updated.
Before installing stuff with pip, make sure the above PATH
changes worked and you are using the correct version.:
pip --version
should return something like (a path with /usr/local/
):
pip 1.0.2 from /usr/local/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg (python 2.7)
install some dependencies:
brew install libjpeg brew install lcms brew install libtiff
If you don't need FREETYPE support the regular pip install PIL
will work. There is no real need to install PIL globally then.
If you need FREETYPE, choose one of these three options. I recommend Pillow:
Pillow is an alternative Distribution of PIL:
pip install Pillow
Pillow does a great job of finding all the dependencies it needs in OSX. But it sucks a bit if an other packages list PIL as a dependency, because Pillow will not be recognized as a valid PIL installation and PIL will be installed again.
Homebrew has a formula for PIL:
brew install pil
.. WARN:: This may produce the dreaded ``AccessInit: hash collision: 3 for both 1 and 1`` error if some apps import PIL as ``from PIL import Image`` and others as ``import Image``.
Since PIL is not packaged correctly, setup.py needs to be tweaked.
Use the newest version of PIL from http://www.pythonware.com/products/pil/ and edit FREETYPE_ROOT = ("/usr/x11/lib","/usr/x11/include",)
in setup.py. Then:
python setup.py build_ext -i python setup.py install
Some python packages don't work when PIL is installed with the PIL
prefix. Add a PIL.pth
file in /usr/local/lib/python2.7/site-packages/PIL.pth
containing the string PIL
. Now both from PIL import Image
and import Image
will work.
This oneliner will do exactly that:
echo "PIL" > /usr/local/lib/python2.7/site-packages/PIL.pth
aggdraw provides much better anti-aliasing than PIL . And lots of other stuff.
use this version: http://bitbucket.org/2degrees/aggdraw-64bits/src
this needs mercurial to be installed (pip install mercurial
)
mkdir ~/tmp cd ~/tmp hg clone https://[email protected]/2degrees/aggdraw-64bits cd aggdraw-64bits /usr/local/bin/python setup.py build_ext -i /usr/local/bin/python setup.py install
Enabling freetype does not work for me. Please share if you find a way :-)
brew install ghostscript brew install imagemagick # barcode (qrcode and others) reading lib brew install zbar pip install zbar
server:
brew install mysql # look at the instructions brew prints after installation. this is the short version: unset TMPDIR mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mysql/5.5.14/com.mysql.mysqld.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist # set a root password /usr/local/Cellar/mysql/5.5.14/bin/mysqladmin -u root password 'new-password'
client:
brew install mysql-connector-c pip install mysql-python
server:
PYTHON=/usr/local/bin/python brew install postgresql # look at the instructions brew prints after installation. this is the short version: initdb /usr/local/var/postgres cp /usr/local/Cellar/postgresql/9.0.4/org.postgresql.postgres.plist ~/Library/LaunchAgents/ launchctl load -w /usr/local/Cellar/postgresql/x.x.x/org.postgresql.postgres.plist createuser # create the initial postgres user
python client bindings (does not work without the server):
pip install psycopg2
packages:
brew install postgis # this will handle installing postgres, geos, proj4, and postgis brew install gdal
creating a spatially-enabled database template:
createdb template_postgis # create a standard postgres db createlang plpgsql template_postgis # enable the PL/pgSQL PostGIS functions psql -d template_postgis -f /usr/local/Cellar/postgis/1.5.3/share/postgis/postgis.sql psql -d template_postgis -f /usr/local/Cellar/postgis/1.5.3/share/postgis/spatial_ref_sys.sql
Creating a new database based on template_postgis
:
createdb -T template_postgis [yourdatabase]
Alternatively it is possible to enable spatial functions on a existing databases by calling the above commands for creating template_postgis
(except createdb
, of course). Just use your existing database name instead of template_postgis
Add correct userrole:
psql -s postgres alter user postgres with role superuser;
brew install mongodb # look at the instructions brew prints after installation. this is the short version: cp /usr/local/Cellar/mongodb/1.8.2-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Mongohub (http://mongohub.todayclose.com/) is an awesome OSX ui for mongodb.
git and hg:
brew install wget brew install git brew install hub brew install git-flow brew install gist brew install git-extras git-hg git-multipush git-sh git-svn-abandon git-utils pip install mercurial
hub is a useful extension to make git github aware.
gist is a commandline interface to github gists.
I had problems installing mercurial with pip on a 32bit MacBook Pro (Core Duo and less) because it failed to compile the 64bit version of the mercurial.base85 extension. So I downloaded the mercurial 1.8.2 package from pypi and removed -arch x86_64
near the end of setup.py
and the ran python setup.py install
and it worked fine.
install and make the command globally available:
brew install gettext brew link gettext
brew install ssh-copy-id brew install vcprompt pip install virtualenv pip install virtualenvwrapper brew install bash-completion pip install ipython pip install bpython
the most useful package. this one is a must.:
brew install cowsay cowsay You can now code python on OSX. Congratulations!