Python can be built from source, but the easiest way is to get a
binary package for your type of system and version of python. This
document will give you information on either type of installation.
Windows Binary Installer
This is probably the most popular method of installation. If you
are running on windows, it is highly recommended you use this form
of installing. The installers come with with nearly everything you
need, and have an easy point and click installers.
The first thing you will need is an installation of Python. Python
binary installers make it easy to get this done. Pygame binaries
usually come for the latest 2 releases of python, so you'll want to
be fairly up to date.
Once that is in place, you want to download the appropriate windows
binary. From the pygame downloads page you can find the .EXE file
you need. This will automatically install all of pygame and all the
SDL dependencies. The windows binaries have filenames like this;
"pygame-1.3.win32-py2.1.exe". This would be the installer for
pygame version 1.3, for python version 2.1. You shouldn't have
trouble finding the correct binary from the "Windows" section of
the download page. http://www.pygame.org/download.shtml.
You will also probably want to install the windows documentation
and installation package. This will add easy links to the different
documentation and games that come with pygame. The installer for
this is found next to the other windows binary downloads. The
filename looks like this; "pygame-docs-1.3.exe". And this would
install the documentation and examples for pygame-1.3.
One other thing the windows binaries are missing is the Numeric
Python package. You can easily install this separately and it will
allow you to use the pygame "surfarray" module. This module is
optional, so there is no need to do this. There are binary
installers from the Numeric download page.
Unix Binary Packages
For many unix systems, the easiest way to install pygame is from
source. Still, there are binary packages available for different
There are several binary RPM packages for linux machines. These are
actually a little bit of work to install, since you will also need
several RPM packages for the dependencies. There is a good chance
your linux distribution came with the needed dependencies (like
Python and SDL). There are binary RPMs available from the website
for each dependency.
For debian systems, pygame is actively maintained in the debian
archives. Visit the debian pygame page for more information.
FreeBSD also has an active pygame package. While techinicaly it
isn't binary, it is automatically built and installed by the ports
manager. See the FreeBSD package page for more information.
Gentoo has a builtin package for pygame. This is compiled for your
system as it installs, similar to BSD,
For MacOS 9.x, binaries are available on the pygame downloads page.
http://www.pygame.org/download.shtml. Unfortunately the binaries
are stuck at pygame version-1.1. This also only works with an old
copy of MacPython 2.1.
For OS X 10.2 (and later), binaries are available from
Bob Ippolito's Package Manager repository. Note that versions of
Python prior to 2.3, versions of OS X prior to 10.2, and Fink's
version of Python are not supported. The package and instructions
are at http://undefined.org/python/pimp/ and will automatically
install dependencies. Instructions for making application bundles
for OS X that use pygame are forthcoming, but read up on
bundlebuilder in the meantime.
Installing From Source
Compiling and installing pygame is handled by Python's distutils.
Pygame also comes with some scripts to automatically configure the
flags needed to build pygame. Use the "setup.py" script to start
The first time you run the setup script, it will call the
"config.py" script. This will build a "Setup" file which stores all
the information needed to compile. The "config.py" will do a good
job of detecting what dependencies are available and where they are
located. If it isn't perfect, it is easy to build your own, or edit
the created "Setup" text file. This "Setup" file is a simple
Makefile-like text file. It defines variables needed to use each
dependency, and then enables all the pygame modules with found
dependencies. If you have trouble compiling, you should be able to
easily fix any problems inside the "Setup" file.
Running the "setup.py" script will call distutils to build and
install the pygame package. Distutils actually supports a wide
variety of compile and install options. running "python setup.py
help" will start to show you the different options available. You
can change many things like install locations, compiler to use, and
more. Calling the "setup.py" script with no arguments and it will
just ask you if you want the default flags needed to compile and
Windows Compiling Info
Compiling all the dependencies on windows is a real challenge.
Fortunately there is zip file with all the libraries and headers
you need to compile. You should definitely unzip this into your
pygame source folder, and all the files go into a "prebuilt"
subdirectory. The autoconfigure "config.py" script will find this
prebuilt directory and make use of it for you.
http://www.pygame.org/ftp/win32-dependencies.zip. If you don't use
the prebuilt binaries directory, the autoconfig script will scan
the neighboring directory trees to find the dependencies.
When installing on windows, the "setup.py" script will also copy
all the used .DLL files into the pygame directory.
If compiling with VisualC, these instructions are all you'll need
to do. If you are using Borland's free compiler or cygwin, you will
need an extra step. You need to convert the VisualC style .LIB
files into the format used by your compiler. Both Borland and
Cygwin include a command to do this. To convert the python library
the command looks like this with Borland: COFF2OMF python22.lib
python22_bcpp.lib. For Cygwin, this is the command you need:
DLLTOOL --dllname python15.dll --def python15.def --output-lib
libpython15.a. You will also need to do this conversion on all the
LIB files that come with the prebuilt dependencies (in the
prebuilt/lib directory). Note that with cygwin you should replace
the --def flag and argument with --export-all-symbols since they do
not come with .def files.
Mingw is well supported by SDL, but a little rougher for python
extensions. Here is a link with more information to compiling with
Unix Compiling Info
Compiling from linux shouldn't give you any problems. One thing you
must keep in mind is that most linux RPM packages separate the
actual library from the "dev" files needed to compile. To build you
will need to make sure the packages like "SDL-dev" are installed.
You can check to see if SDL is ready to be built from by running
the command sdl-config and seeing if it is found. If the sdl-config
script is not on the path (or you have more than one?) Set the
environment variable SDL_CONFIG to its location.
Sometimes you will have the SDL libraries installed in once
location, and the other SDL libraries in another. This tricks the
pygame config scripts, but you can help it out by setting the
environment LOCALBASE to a path prefix where the other libraries
are. The common case for this is SDL installed in /usr and other
SDL libs installed in /usr/local. The command for this situation is
"LOCALBASE=/usr/local python setup.py install".
OS X Compiling Info
Make sure to have Numeric, PyObjC, PIL, and the SDL development
frameworks installed. Compilation is only supported for Python 2.3
under OS X 10.2 and later.