Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
How to build a Windows installer under Linux or OSX


These are instructions for building a Windows installer (.exe) of your package under a foreign operating system.  For this purposes, Wine is used to emulate Windows, although there is no reason why the extension cannot be built on a virtual machine.

1. Install Wine (`sudo apt-get install wine` or available on OSX via `macports <http://www.macports.org/>`_).

2. Install Python 2.7 from `python.org <http://www.python.org>`_.

3. Install `mingw <http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/>`_.  Click on the latest mingw-get-inst folder and download the exe file. Select the C, C++, and Fortran Compilers.  You may get a log error when installing, but it should still work.

4. Start the registry editor (wine regedit) and setup the system path:

 - Browse to the ``PATH`` key at ``HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment``, or use Edit > Find > PATH.
 - Append to it: ``c:\python27;c:\mingw\bin;c:\python27\scripts``.
 - Right click and select New > String Value to create a new key called ``HOME`` and set it to ``c:\users\yourusername``

5. Create a new file in ``~/.wine/dosdevices/c:/users/yourusername/`` called ``pydistutils.cfg`` containing

::

  [build]
  compiler=mingw32


This tells distutils not to look for the Microsoft Compilers, but to use mingw as the
default compiler.

6. Get the ``setuptools-*.win32-py2.7.exe`` from `http://pypi.python.org/pypi/setuptools <http://pypi.python.org/pypi/setuptools>`_ and install.

7. Install Cython (using ``wine easy_install cython``).
Note: If you get ``error: unrecognized command line option '-mno-cygwin'``,
remove the ``-mno-cygwin`` flags in the ``Mingw32CCompiler`` class in
``~/.wine/dosdevices/c:/Python27/Lib/distutils/cygwinccompiler.py``, then run easy_install again.
For more information, see `python issue 12641 <http://bugs.python.org/issue12641>`_.
The diff is as follows:

::

    322,326c322,326
    <         self.set_executables(compiler='gcc -O -Wall',
    <                              compiler_so='gcc -mdll -O -Wall',
    <                              compiler_cxx='g++ -O -Wall',
    <                              linker_exe='gcc',
    <                              linker_so='%s %s %s'
    ---
    >         self.set_executables(compiler='gcc -mno-cygwin -O -Wall',
    >                              compiler_so='gcc -mno-cygwin -mdll -O -Wall',
    >                              compiler_cxx='g++ -mno-cygwin -O -Wall',
    >                              linker_exe='gcc -mno-cygwin',
    >                              linker_so='%s -mno-cygwin %s %s'


8. Optionally, install Numpy from `provided installer <http://sourceforge.net/projects/numpy/files/NumPy/>`_.  Browse to the desired ``numpy-*-win32-superpack-python27.exe``.

9. Compile your extension from within your package source directory

::

  python setup.py bdist_wininst

This will only work if you have a setup.py file, similar to the one at
`https://github.com/stefanv/cython_demo.git <https://github.com/stefanv/cython_demo.git>`_.

This step should then generate a ``.exe`` in the ``dist/`` directory.
Something went wrong with that request. Please try again.