Files
heroku-buildpack-python/Readme.md
T
Noah Zoschke 64ae2f21bf readme polish
2011-05-18 10:16:04 -07:00

1.7 KiB

Python Language Pack

The Python Language Pack (PLP) is a language pack for running Python and Django apps on Heroku.

If requirements.txt is present, the PLP considers the directory a Python app with packages to install via pip.

Furthermore, if ${PROJECT}/settings.py is present, the PLP considers the directory a Python/Django app, and patches settings.py to parse the Heroku DATABASE_URL config vars. It then sets default process types to use the Django web server and console.

Compile Hooks

The PLP uses a Makefile for user-controlled hooks into slug compilation. If present, the make environment rule will be eval'd in the compile script, allowing user-defined exports.

A sample Makefile (raw) to force a re-build of every pip package is:

environment:
	export PIP_OPTS=--upgrade

Django settings.py

The PLP injects code into settings.py to alias every Heroku database URL config var. Every variable of the format ${NAME}_URL => postgres:// will be added to the settings.DATABASES hash.

On an app with both a shared SHARED_DATABASE_URL and a dedicated HEROKU_POSTGRESQL_RED_URL that is promoted to DATABASE_URL, settings.DATABASES will be:

{
  'DATABASE':               {'ENGINE': 'psycopg2', 'NAME': 'dedicated', ...},
  'HEROKU_POSTGRESQL_RED':  {'ENGINE': 'psycopg2', 'NAME': 'dedicated', ...},
  'SHARED':                 {'ENGINE': 'psycopg2', 'NAME': 'shared', ...},
  'default':                {'ENGINE': 'psycopg2', 'NAME': 'dedicated', ...},
}

These aliases can be referenced and further modified at the bottom of settings.py.