Files
heroku-buildpack-python/Readme.md
T
2011-05-18 10:28:36 -07:00

2.1 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.

External Language Pack

Cutting-edge development is taking place in this repo. To use this on Heroku, set a LANGUAGE_PACK_URL config var with a fully authenticated URL to this repo:

$ heroku config:add LANGUAGE_PACK_URL=https://nzoschke:XXXXXXX@github.com/heroku/language-pack-python.git

On next push, slug-compiler will use this LP instead of the built-in one.

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.