Using Git

To create a new local repository go to and fork the repository to your own username account. Check out your clone at a URL like this:

git clone

You can use your local fork to create topic branches and make pull requests into the main repo. Here is a guide on working with topic branches.


Everything should run in Python 2.5 or greater

Note: Recent Ubuntu Linux versions (at least after Jaunty) ship with Python 2.6. Many have reported problems running the Google App Engine SDK with a non-2.5.* version of Python. To install Python 2.5 without breaking the default Python install, you can use this command:

sudo apt-get install python2.5

Install the Google App Engine SDK from

If on Mac OS X be sure to start up the launcher once so that it prompts you to create symbolic links in /usr/local/google_appengine

Unlike the Google App Engine Python SDK for Mac OS X/Windows, the Linux version comes as a zip archive rather than an installer. To install, just unpack the archive into /usr/local/google_appengine. Or you can unpack it to your home directory and create a symlink in /usr/local/google_appengine.

It’s a good idea to install PyCrypto for pushing code to Google and so that the SDK works as expected.

On a Debian/Ubuntu system, use this command:

sudo apt-get install python-crypto

On Mac OS X you need to grab the PyCrypto source and run:

sudo python install

To run the JavaScript lint tests (which will fail otherwise) you will need the jsl command line tool, aka javascript-lint.

On a Mac OS X system with homebrew, type:

brew install jsl

(there is probably something similar for Linux)

Running The Development Server


The Google App Engine SDK currently does not run inside a virtualenv. This is a known bug.

To start up a local server, run

python runserver

Note: If you are running on a system with multiple versions of Python installed, make sure that you are using the 2.5 version, e.g.:

python2.5 runserver

You can reach your local server by going to http://localhost:8000/ in your web browser.

If you are running this server on a different computer, you need to run the server with

python runserver

instead. This tells Django to bind to your external IP address and accept remote connections.

Below, we refer to local URLs like this: http://HOST:PORT/some/url You should replace “HOST:PORT” with the appropriate host name/port combination.

Running The Test Suite

To run all unit tests:

python test

You can also use

python test [application name]

to only run a single application’s tests.