Django Installation on Mac OS X Lion

Like many of Apple fanboys out there even I decided to upgrade Mac OS X Snow Leopard (10.6) to Mac OS X Lion (10.7) as soon as it was made available on App Store. Upgrading from App Store was pretty smooth and was surprised it did not break any apps (May be that’s because it’s just an incremental upgrade with some fancy features) except my Django projects failing to validate because of the default python version change (from 2.6.x to 2.7.1) and can be easily fixed. However I decided to go for fresh install of OS X Lion to test how fresh install (wipe out disk after backup and install ) works with OS X Lion.

Once done with fresh installation of Mac OS X Lion, immediate task was setting up my development environment which includes MySQL server, phpMyAdmin and Django.

Steps I followed to get Django development environment back are as below

  1. Install Xcode via Mac OS X App Store ( Might be required when you compile and install from source)
  2. Install MySQL Server
  3. Install phpMyAdmin
  4. By default jpeg, freetype, littlecms image library support is missing, you need to install at least jpeg support so ImageField in your django project supports jpeg formats.
    1. Install JPEG libraries
      1. Download JPEG library source curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz
      2. Extract tar -xvzf jpegsrc.v8c.tar.gz
      3. Switch to jpeg directory cd jpeg-8c
      4. Run ./confgure
      5. Run make
      6. Run sudo make install
    2. Install Freetype libraries
      1. Download Freetype library source curl -O http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.4.5.tar.gz
      2. Extract tar -xvzf freetype-2.4.5.tar.gz
      3. Switch to freetype directory cd freetype-2.4.5
      4. Run ./configure
      5. Run make
      6. Run sudo make install
  5. Install Django using sudo easy_install django
  6. Install Python Image Library (PIL) using sudo easy_install PIL
  7. Install mysql-python driver using sudo easy_install MySQL-python (Make sure you got mysql in your PATH, otherwise this will fail with mysql_config not found error)

That’s all you need to go ahead and start creating Django projects. However I prefer using virtualenv for all my Python projects. If you take this route, you can use pip install <package_name> to install necessary packages for example pip install django, pip install MySQL-python, pip install PIL to install Django, MySQL Python driver and Python Image Library.

Update 1 (25/07/2011): If you get error “django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/xxx/xxx/pyprojects/xxx/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/xxx/xxx/pyprojects/xxx/lib/python2.7/site-packages/_mysql.so
Reason: image not found”, when you validate your project or try to use MySQL-python,

Type export DYLD_LIBRARY_PATH=”$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/” in your terminal and see if problem persists. You can add it to your .profile file to make this persistent so you don’t need to run it every time.