== Development (Mac OS X Tiger) == Originally written by [http://www.benatkin.com/ Ben Atkin] These instructions are for Django 0.91. I hope to update this with most new releases. I prefer the latest tarballs for general development. If I ever start to get really into the software I get the CVS or SVN. '''Before beginning''', install XCode. XCode contains make, gcc, and other things you'll be needing when compiling from source. ''As an alternative to these instructions, consider installing [http://darwinports.opendarwin.org/ DarwinPorts]. It simplifies installing up-to-date versions of apache2, python 2.4, mod_python, PIL, and the various databases that Django supports''. A write up walking through the packages to install with [http://darwinports.opendarwin.org/ DarwinPorts] to get a quick install running is available at http://www.rhonabwy.com/wp/2006/07/20/installing-django-on-macos-x-development-version/ === Installing Python === 1. Download and unpack latest stable python tarball 1. {{{./configure --prefix=/opt/python; make; make install}}} 1. Add {{{export PATH=/opt/python/bin:$PATH}}} and {{{export MANPATH=/opt/python/man:$MANPATH}}} to {{{~/.profile}}} 1. Open a new terminal session 1. Type {{{python}}} and check that it is the version you just installed === Installing PostgreSQL === 1. Create a new user, ''postgres'' in the Accounts Pane of the Mac OS X System Preferences 1. Download and unpack latest stable PostgreSQL tarball 1. {{{./configure --prefix=/opt/pgsql; make; sudo make install}}} 1. Add {{{export PATH=/opt/pgsql/bin:$PATH}}} and {{{export MANPATH=/opt/pgsql/man:$MANPATH}}} to {{{~/.profile}}} 1. Add {{{export PGDATA=/opt/pgsql/data}}} to {{{~/.profile}}} '''NOTE: If this isn't set, ''postgres'' will complain about a missing conf file.''' 1. Open a new terminal session 1. Type {{{psql -V}}} and check that it is the version you just installed 1. Create a data directory: {{{sudo mkdir $PGDATA}}} 1. Change ownership to postgres: {{{sudo chown postgres:postgres $PGDATA}}} 1. Create the initial data area: {{{sudo -u postgres initdb -D $PGDATA}}} '''NOTE: {{{sudo}}} means ''substitute user and do'', and in this case with the initial {{{-u}}} parameter, we are telling sudo to run the command as ''postgres'' rather than ''root''.''' 1. To run the database (will not be automatically started on boot): {{{sudo -u postgres pg_ctl start}}} 1. Open a new window, and type {{{sudo -u postgres createdb test}}}. If it says {{{CREATE DATABASE}}}, it's working. :) === Installing psycopg (PostgreSQL Bindings) === At the time of this writing, the only stable version of ''psycopg'' is ''psycopg1''. The development version ''psycopg2'' is not supported by Django. 1. Download the latest stable tartball of ''[http://www.egenix.com/files/python/mxDateTime.html mxDateTime]'' 1. Unpack the tarball and go into the directory 1. {{{python setup.py build}}} 1. {{{sudo python setup.py install}}} 1. Download the latest stable tarball of [http://initd.org/pub/software/psycopg/ psycopg1], unpack and go into the directory 1. {{{export MACOSX_DEPLOYMENT_TARGET=10.4}}} 1. {{{export CPPFLAGS="-I/opt/python/lib/python2.4/site-packages/mx/DateTime/mxDateTime"}}} 1. {{{./configure --with-postgres-libraries=$(pg_config --libdir) --with-postgres-includes=$(pg_config --includedir)}}} 1. {{{make}}} 1. {{{sudo make install}}} 1. Run {{{python}}}, type {{{import psycopg}}} into the interactive read-eval-print loop (REPL), and {{{quit}}} the REPL. I had some issues with the above instructions for installing psycopg, and had to refer directly to the untarred installation source for mxDateTime in order to get the headers. To do this change the configure command to: {{{./configure --with-postgres-libraries=$(pg_config --libdir) --with-postgres-includes=$(pg_config --includedir) --with-mxdatetime-includes=[path/to/mxdatetime]/egenix-mx-base-2.0.6/mx/DateTime/mxDateTime}}} === The Fink Way === I'm referring to ticket:3364 it was the reason why I couldn't get it to work.~~ 1. Install postgres81 1. Install postgres81-dev 1. get the latest and greatest psycopg2 (I'm using psycopg2-2.0.5 but please read '''ticket:3364''') 1. keep to the rest of this tutorial but use psycopg2 instead of psypg1 * Note: install psycopg2 ist just `python setup.py build`and `python setup.py install` psycopg1 wouldn't install with fink... '''' In `settings.py` in your django project use the backend `postgresql_psycopg2` otherwise you'll get a bunch of errors about not finding the psycopg package''''' which we aren't using anyway because we now use psycopg2. === Darwin Ports way === Alternative method for installing psycopg is using the darwin ports 1. sudo port install py-egenix-mx-base 1. sudo port install py-psycopg Darwin ports are available at http://darwinports.opendarwin.org/