How to install Python 2.2.2 on your Macintosh
This is a MacPython that can run on classic MacOS (from 8.1
onwards) and natively on MacOSX. The installer tries to work out whether you can
use the Carbon version or not. For Mac OS X users: this version of Python
does not run from the command line, it is a pure "Mac only" app. Use the standard
unix Python from the commandline, the two Pythons will be merged in the future, see
the note on "What is in a name" below.
You should definitely read the Relnotes file too, and the section below about
toolbox module reorganization. You should also read :Misc:NEWS, which lists
the general (non-mac-dependent) new features of this Python release.
A special note about the active installer: do not background it, it may hang
your machine. This is a general problem with Vise active installers, MindVision
are working on it.
If this is your first encounter with Python: you definitely need the
common user documentation (common to all platforms). You can find this
(in various forms) on www.pythonlabs.com, www.python.org and
ftp.python.org. Through there, or via
http://www.cwi.nl/~jack/macpython.html you can also find the most recent
Mac-specific documentation is included in this distribution in folder
Mac:Demo. The documentation is sparse, but it will have to serve for
now. The documentation is in HTML format, start with index.html.
This installer installs MacPython for classic PPC MacOS, MacPython for Carbon
(OS X, OS 9 or OS 8 with CarbonLib installed) or both, depending on your
configuration. By selecting custom install you can bypass these tests and
install what you want.
If you want 68k support you will have to get MacPython 1.5.2.
What to install
The optional parts in this distribution are
- TK+PIL: Tkinter and support modules, plus Imaging, the Python image
manipulation package (allows you to read, write and display images and
do lots of operations on them).
For Carbon MacPython you only get PIL: there is no Tcl/Tk for Carbon.
This is the reason Classic MacPython is also installed on MacOSX: it
allows you to run Tkinter applications, albeit in the Classic box.
- img: another imaging package. Has more file format support and is faster
than imaging, but has only limited operations on images. There is a bridge
between the packages.
- Numeric: the LLNL Numeric Python extension. All sorts of nifty operations
on matrices and such. This is the most recent version from the
Numeric has moved from Extensions to :Lib:site-python, by the way,
see the release notes.
- Developers kit: all header files and some tools and sample projects
to get you started on writing Python extensions if you have CodeWarrior.
All these except the DevKit are installed with Easy Install.
After the installer finishes it automatically launches the appropriate
ConfigurePython applet, to finish configuration of your Python. If you
run MacOS9 or later (or 8 with CarbonLib installed) you can switch
back and forth between the classic and Carbon versions of Python by
running either ConfigurePythonClassic or ConfigurePythonCarbon.
Moving your Python installation after installing is generally not a
good idea. If you have to do this anyway you should remove your
preference file, run ConfigurePython and remove all .pyc
files. (there's a script zappyc.py that does the latter).
If you don't have enough memory: the sizes choosen are somewhat
arbitrary, and they are as high as they are so that test.autotest runs
with fewer problems. An average Python program can make do with much
less memory. Try lowering the application sizes in the finder "get
info" window, and seeing whether the resulting python is still usable.
It is probably a good idea to run the automatic tests. Start
Python and "import test.regrtest ; test.regrtest.main()".
test_frozen will fail in MacPython because of different handling on
frozen modules. This should not be a problem in normal use.
Three tests may fail on MacOS9 with MemoryErrors:
test_longexp, test_sha and test_zlib (on MacOSX these should pass).
If you increase the PythonInterpreter memory partition size they will
pass (but for longexp you have to increase it by an incredible amount,
400MB is rumoured). It will, however, print some messages about
optional features not supported. You should not worry about these,
they are modules that are supported by Python on other
platforms. Also, if you didn't run compileall before autotesting you
may run out of memory the first time you run the tests. test_socket
may also fail if you have no internet connection. Please also read the
Relnotes file for other minor problems with this distribution.
Using Python is most easily done from the IDE, which has a builtin
editor, debugger and other goodies. The alternative is to use
PythonInterpreter, which is the lowlevel interpreter with a
console-window only (similar to Unix Python).
If your program uses Tkinter you MUST run it under PythonInterpreter,
Tkinter and IDE are incompatible and your program will fail in strange
What is in a name?
A lot, actually:-) Especially if you are looking for "a Python for a Macintosh"
and assume that MacPython will fit that bill. Traditionally, MacPython was the
only solution, but with the appearance of MacOSX there are more possibilities.
MacPython 2.2.X is meant primarily for "old MacOS", but as unix-Python 2.2.X
misses a lot of the mac-specific functionality for some applications it is
still the best choice on MacOSX as well. For unix-related tasks you are better
off with unix-Python 2.2.X, and as of OSX 10.2 Apple ships a Python (version 2.2)
Another possibility on OSX is to use a framework-based build of unix-Python 2.2.X,
which does include most of the mac goodies. This python is colloquially known
as MachoPython, and you will need it to run Tkinter programs natively, or use
wxWindows. See the MacPython homepage for details.
The current expectation is that by the time 2.3 comes out (early 2003) MacOSX
will be so well established that we will use the name "MacPython 2.3" to refer
to the OSX-only framework build of unix-Python, which by then will include all
the mac goodies. The OS9 version will probably be called something like
The distinction between these versions and there names is especially important
if you join the discussions on the MacPython mailing list, and it is a good idea
to clearly state your Python and MacOS version when asking for advice or submitting
OSX Multiple users note
Interaction with Mac OS X multiple users has been tested only very lightly.
If you install as a privileged user everything installs fine.
If you install as a non-privileged user everything should install in your local
per-user folders. But: as there is no global PythonCore you can only run applets
if they reside in your toplevel Python folder.
If you install as a privileged user and then try to run
Python as another (non-privileged) user you may encounter a problem with
not having a preference file: the symptom is failing to import all sorts
of standard modules. If you remove your per-user Python preference files
(in ~/Library/Preferences) and then run PythonInterpreter once everything should
MacOS 8.1 note
The distribution is fully functional as far back as MacOS 8.1, with one exception:
the IDE as installed is not compatible with 8.1. There is a separate path for running
the IDE on 8.1 available at http://www.cwi.nl/~jack/macpython.html .
Up to three items are installed in the system folder: the interpreter shared
libraries PythonCore and PythonCoreCarbon live in the Extensions
folder and the "Python 2.2.1 Preferences" file in the Python subfolder
in the Preferences folder. All the rest of Python lives in the folder
you installed in.
On OSX the libraries are installed in /Library/CFMSupport. The ConfigurePython
applets will complain if you have no right to create the libraries there
(you need Admin privileges). This has one consequence: you will not be able to
run applets unless they reside in the MacPython folder (such as the IDE or
EditPythonPrefs). If you try to run an applet stored elsewhere you will
get a "Cannot locate PythonCore" error message.
Things to see
Start off at Mac:Demo:index.html. Read at least the first few sections.
There are also some interesting files in the "Relnotes" folder that may
contain useful information. There is also a first stab at documentation
(plus examples) in the Mac:Demo folder. The toplevel Demo folder has
The Mac:Lib:test folder also has some programs that show simple
capabilities of various modules.
The ":Mac:scripts" folder has some sample scripts. Some are useful,
some are just interesting to look at to see how various things
work. The MkDistr, mkapplet and fullbuild scripts (plus the ones
mentioned above) may help you to understand how to use AppleEvents and
various other toolboxes from python.
Other mac-specific goodies can be found in :Mac:Tools, of which the
IDE sources and a CGI framework deserve special mention.
The 'img' group of modules, which handles I/O of many different image
formats is included, but without documentation. You can find docs at
ftp://ftp.cwi.nl/pub/jack/python/img (or somewhere around there).
Finally there is a Mac:Contrib folder which contains some contributed
Upgrading from older Python releases
Python releases are independent of each other, with separate
Preferences files, shared library names, etc. The good news is that
this means you can keep your older version around if you are unsure
whether to upgrade. The bad news is that your old preference settings
are lost and you have to set them again.
After you are satisfied that 2.2.2 works as expected you can trash
anything in the system folder that has "python" in the name and not
The ConfigurePython... applets will try to detect incompatible
preferences files and offer to remove them. This means that re-running
ConfigurePython after a second install of the same MacPython version
(or after moving the Python folder) should fix things up correctly.
The installer for this product was created using Installer VISE
from MindVision Software. For more information on Installer VISE,
7201 North 7th Street
Lincoln, NE 68521-8913
Just van Rossum <email@example.com> created the initial version of the
installer (with Installer Vise Lite), and Jack worked from there.
Thanks go to the whole Python community with Guido in the lead, of
course. Mac-specific thanks go to the pythonmac-sig, Just van Rossum,
Corran Webster, Tony Ingraldi, Erik van Blokland, Bill Bedford, Chris
Stern, Gordon Worley, Oliver Steele, M. Papillon, Steven Majewski, David
Goodger, Chris Barker, Luc Lefebvre, Tattoo Mabonzo K., Russell Finn,
Tom Bridgman, Russel Owen, Pascal Oberndoerfer, Dean Draayer,
Alexandre Parenteau, Donovan Preston, Daniel Brotsky, Jason Harper,
and all the other people who provided feedback, code or both!
MacPython includes waste, a TextEdit replacement which is (c) 1998
A special mention is deserved by Matthias Neeracher, who has written
the brilliant unix-compatible GUSI I/O library, without which
MacPython would not have sockets or select, and to Alexandre
Parenteau, who has ported this library to Carbon.
Send bug reports, suggestions, contributions and fanmail to
<firstname.lastname@example.org>. However, a better way to discuss MacPython is to join the
<email@example.com> mailing list, which is explicitly meant for
this purpose. And please remember what's said in the note on "what's in
a name" above.
1098 SJ Amsterdam