How to build extensions on Windows?

Filip Wasilewski filipwasilewski at gmail.com
Thu Sep 7 15:11:25 EDT 2006


Kevin D. Smith wrote:
> I've written a simple Python extension for UNIX, but I need to get it
> working on Windows now.  I'm having some difficulties figuring out how
> to do this.  I've seen web pages that say that MS Visual Studio is
> required, and other that say that's not true, that MinGW will work.
> Then there is Mike Fletcher's web page
> (http://www.vrplumber.com/programming/mstoolkit/) that describes in
> detail how to build extensions, but most of the links to external
> software are no longer valid.  I think it's safe to say that I am
> completely lost, as there appears to be no authoritative, up-to-date
> description on how to make this work.

There is an easy way to build Python extensions on Windows with MinGW
and it works fine for me. Just follow these steps:


1. Get MinGW gcc and/or g++, preferably via MinGW installer from [1].
You may have to restart your computer or manually edit PATH system
environment variable to include MinGW's bin directory (default is
c:\mingw\bin). Then check if it is there by typing `path` in the cmd
window.

2. Get pexports-0.42h.zip from [2] and extract pexports.exe file

3. Prepare MinGW compatible .a library file
   pexports.exe c:\WINDOWS\system32\python24.dll > python24.def
   c:\mingw\bin\dlltool.exe --dllname python24.dll --def python24.def
--output-lib libpython24.a

4. Place the new libpython24.a file in the Python's libs directory (but
not in the Lib dir), default is c:\python24\libs

5. Build your extension by executing your setup script with
`--compiler=mingw32` parameter.
   python setup.py build --compiler=mingw32

Additionally you may wish to put a distutils.cfg file in the
c:\python\lib\distutils dir containing following entries:
[build]
compiler = mingw32

This will tell the distutils script to use MinGW compiler by default
when executing `python setup.py build` command.

best,
fw

[1] http://sourceforge.net/projects/mingw/
[2] http://starship.python.net/crew/kernr/mingw32/pexports-0.42h.zip




More information about the Python-list mailing list