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;
This would be the installer for pygame version 1.8.0, for Python
version 2.5. You shouldn't have trouble finding the correct binary
from the "Windows" section of the download page.
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.8.0.exe". And this would install the
documentation and examples for pygame-1.8.0
One other thing the windows binaries are missing is the Numeric or
numpy Python packages. 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. A Numeric for Windows python
2.5 can be found on the download page:
http://www.pygame.org/download.shtml. There are older binary
installers from the Numeric download page.
PixelArray, which is built into pygame 1.8+, and is usually quite a
lot faster is the recommended array implementation to use. Numpy is
newer than Numeric, however both are not entirely compatible.
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
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,
Mac OS X Binaries
For Mac OS X 10.3 and above, binary packages are available from
This package includes almost of the dependencies required for pygame
(SDL, SDL_image, etc.), but you need PyObjC 1.2 or later, and may also
want to get Numeric, numpy and PyOpenGL. A PyObjC 1.4 installer is
also made available on the download page.
If you want to use the Apple system python, you will need to compile
from source at this time - since most people prefer to leave the
system python alone, and use the python downloaded from python.org.
See http://pygame.org/wiki/MacCompile for current instructions for
compiling from source on Mac OSX.
pygame is also available from the fink, and macports distributions.
To build self-contained pygame applications, you should use py2app.
There is an example in:
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
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 install.
Windows Compiling Info
You can compile pygame on windows with mingw (gcc for windows) and
also with visual studio. Up to date details can be found here:
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".
Mac OS X Compiling Info
Up to date instructions for compiling on Mac OS X can be found here: