This program will install MacPython 2.3b1 for Mac OS X.

MacPython consists of the Python programming language interpreter, plus
a set of programs to allow easy access to it for Mac users (an
integrated development environment, a Python extension package manager),
plus a set of pre-built extension modules that open up specific
Macintosh technologies to Python programs (Carbon, AppleScript,
Quicktime, more).

The installer puts the applications in MacPython-2.3 in your
Applications folder, command-line tools in /usr/local/bin and the
underlying machinery in /Library/Frameworks/Python.framework.

The PythonIDE application has a Help command that gets you started
quickly with MacPython and contains references to other documentation.

More information on MacPython can be found at
http://www.cwi.nl/~jack/macpython.html, more information on Python in
general at http://www.python.org.
