5674
Comment:
|
13570
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
'''THIS PAGE IS WORK IN PROGRESS''' | <<TableOfContents()>> |
Line 3: | Line 3: |
Even if Python is an interpreted language, you may need to install Windows C++ compilers in some cases. Unlike Linux, compilers for Windows are not included by default in the OS. |
Even though Python is an interpreted language, you may need to install Windows C++ compilers in some cases. Unlike Linux, compilers for Windows are not included by default in the OS. |
Line 6: | Line 5: |
By example, you will need to use them if you want : * Install a non-pure Python package from sources with [[https://pip.pypa.io/|Pip]] (If there is no [[http://wheel.readthedocs.org|Wheel package]] provided). * Compile a [[http://cython.org/|Cython]] file. |
For example, you will need to use them if you wish to: |
Line 10: | Line 7: |
Microsoft provide official C++ compilers called ''Visual C++'', you can find them with ''Visual Studio'' or, for some versions, in standalone distribution. Some alternates compilers exists like [[http://mingw.org/|MinGW]], but the CPython implementation is compiled with Microsoft official compilers and compatibility may not be perfect. |
* Install a non-pure Python package from sources with [[https://pip.pypa.io/|Pip]] (if there is no [[http://wheel.readthedocs.org|Wheel package]] provided). * Compile a [[http://cython.org/|Cython]] or [[https://pypi.python.org/pypi/Pyrex|Pyrex]] file. |
Line 13: | Line 10: |
The compiler architecture must be the same as Python (Example: If you use Python 64bit, you have to use a x64 compiler). | Microsoft provides official C++ compilers called ''Visual C++'', you can find them bundled with ''Visual Studio'' or, for some versions, in standalone distributions. Some alternative compilers exist like [[http://mingw.org/|MinGW]], but incompatibilities may occur with a CPython official distribution that is built with Microsoft Visual C++. |
Line 15: | Line 12: |
= Which Microsoft Visual C++ compiler use with a specified Python version ? = Each Python version use a specific compiler version (Example : ''CPython 2.7'' use ''Visual C++ 9.0'', ''CPython 3.3'' use ''Visual C++ 10.0'', ...). So, you need to install the compiler version linked to you Python version : ||'''Visual Studio'''||'''Visual C++'''||'''CPython'''|| ||2015||14.0||3.5|| ||2010||10.0||3.3, 3.4|| ||2008||9.0||2.6, 2.7, 3.0, 3.1, 3.2|| |
The compiler's architecture must be the same as Python's (for example: if you use Python 64bit, you have to use an x64 compiler). |
Line 22: | Line 14: |
= Compilers Installation = | = Which Microsoft Visual C++ compiler to use with a specific Python version ? = Each Python version uses a specific compiler version (e.g. ''CPython 2.7'' uses ''Visual C++ 9.0'', ''CPython 3.3'' uses ''Visual C++ 10.0'', etc). So, you need to install the compiler version that corresponds to your Python version : ||'''Visual C++''' ||'''CPython''' || ||14.0 ||3.5, 3.6 || ||10.0 ||3.3, 3.4 || ||9.0 ||2.6, 2.7, 3.0, 3.1, 3.2 || |
Line 24: | Line 21: |
Compatible architectures is specified for each compiler between brackets. | |
Line 26: | Line 22: |
This table resume architecture names correspondence: ||'''Windows'''||'''Architecture'''|| ||32Bit||x86|| ||64Bit||x64|| ||Itanium||ia64|| |
|
Line 32: | Line 23: |
== Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (x86, x64) == | |
Line 34: | Line 24: |
'''Work in progress...''' | = Compilers Installation and configuration = Compatible architectures are specified for each compiler in brackets. |
Line 36: | Line 27: |
This is the standalone version of ''Visual C++ 14.0'' compiler, you don't need to install ''Visual Studio 2015''. * [[https://www.microsoft.com/en-us/download/details.aspx?id=49512|Microsoft Visual C++ Build Tools 2015]] |
/!\ Before do anything, install or upgrade the ''Setuptools'' Python package. It contain compatibility improvements and add automatic use of compilers: |
Line 39: | Line 29: |
== Microsoft Visual C++ 10.0/2010 standalone version: Windows SDK 7.1 (x86, x64, ia64) == This is the standalone version of ''Visual C++ 10.0'' compiler, you don't need to install ''Visual Studio 2010''. * Uninstall ''Microsoft Visual C++ 2010 Redistribuable'' if present (all versions and architecture). If present, it can cause error on Windows SDK 7.1 installation. * Install ''[[https://www.microsoft.com/en-US/download/details.aspx?id=17851|Microsoft .NET Framework 4]]'' if not present. * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=8279|Microsoft Windows SDK for Windows 7 and .NET Framework 4]]''. Only ''Windows headers and libraries'' and ''Visual C++ Compilers'' options are needed, you can uncheck all other options. * reinstall ''[[https://www.microsoft.com/en-us/download/details.aspx?id=26999|Microsoft Visual C++ 2010 Redistribuable]]'' (In all previously installed architectures). If you want automatic use of this compiler with Python : * Make a back up of ''C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'' * Edit it and replace its content with the following text: {{{ @echo off rem Vcvarsall changed for automatic use of "Windows 7.1 SDK" with Distutils on Python set DISTUTILS_USE_SDK=1 set MSSdk=1 if /i "%1" == "amd64" ( set vcvararch=x64 ) else if /i "%1" == "x64" ( set vcvararch=x64 ) else if /i "%1" == "ia64" ( set vcvararch=ia64 ) else ( set vcvararch=x86 ) CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /%vcvararch% /release }}} * ''Distutils'' will now automatically call the compiler when needed. If you don't want to modify ''vcvarsall.bat'' you have to run the ''Windows SDK 7.1 Command Prompt'' (''C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd'') each time you want compile with Python. By default, it use the ''x86 Debug'' configuration. Use ''/x64'' or ''/ia64'' arguments for change architecture and ''/Release'' argument for use the release configuration. == Microsoft Visual C++ 9.0/2008 standalone version: Visual C++ Compiler for Python 2.7 (x86, x64, ia64) == This is the standalone version of ''Visual C++ 9.0'' compiler, you don't need to install ''Visual Studio 2008''. * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=44266|Microsoft Visual C++ Compiler for Python 2.7]]''. * Make sure ''setuptools'' version is at least 6.0 or it will not correctly detect the compiler path. Simply run the following in command prompt for update it: |
|
Line 81: | Line 32: |
== Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM) == This is a standalone version of ''Visual C++ 14.0'' compiler, you don't need to install ''Visual Studio 2015''. |
|
Line 82: | Line 35: |
Note: Even if this compiler specify Python 2.7, you can use it with all Python versions using ''Visual C++ 9.0''. | * Install ''[[http://landinghub.visualstudio.com/visual-cpp-build-tools|Microsoft Visual C++ Build Tools 2015]]''. Check ''Windows 8.1 SDK'' and ''Windows 10 SDK'' options. * The ''setuptools'' Python package version must be at least 24.0. |
Line 84: | Line 38: |
== MinGW (x86) == MinGW is an alternate compiler that work with all Python versions. Some incompatibilities may occur with CPython official distribution which is build with Microsoft Visual C++. * Install ''[[http://sourceforge.net/projects/mingw/files/|Minimalist GNU For Windows]]'' in ''C:\MinGW''. |
== Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM) == ''Visual Studio 2015'' contains ''Visual C++ 14.0'' compiler. ''Distutils'' will automatically detect the compiler and use it. == Microsoft Visual C++ 10.0 standalone: Windows SDK 7.1 (x86, x64, ia64) == This is a standalone version of ''Visual C++ 10.0'' compiler, you don't need to install ''Visual Studio 2010''. * Uninstall ''Microsoft Visual C++ 2010 Redistributable'' if present (all versions and architectures). If present, it can cause an error on Windows SDK 7.1 installation. * Install ''[[https://www.microsoft.com/download/details.aspx?id=24872|Microsoft .NET Framework 4]]'' if not present. * Install ''[[https://www.microsoft.com/download/details.aspx?id=8279|Microsoft Windows SDK for Windows 7 and .NET Framework 4]]''. Check ''Windows headers and libraries'', ''Visual C++ Compilers'' and ''Windows Native Code Development\Tools'' options only. * Install ''[[https://www.microsoft.com/download/details.aspx?id=4422|Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1]]''. This updates the compiler to Visual C++ 10.0 SP1. * reinstall ''[[https://www.microsoft.com/download/details.aspx?id=26999|Microsoft Visual C++ 2010 Redistributable]]'' (for all previously installed architectures). * The ''setuptools'' Python package version must be at least 24.0. == Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64) == ''Visual Studio 2010'' contains ''Visual C++ 10.0'' compiler. ''Distutils'' will automatically detect the compiler and use it. The ''Express'' edition of ''Visual Studio 2010'' only bundles a compiler for x86. == Microsoft Visual C++ 9.0 standalone: Visual C++ Compiler for Python 2.7 (x86, x64) == This is a standalone version of ''Visual C++ 9.0'' compiler, you don't need to install ''Visual Studio 2008''. * Install ''[[https://www.microsoft.com/download/details.aspx?id=44266|Microsoft Visual C++ Compiler for Python 2.7]]''. * The ''setuptools'' Python package version must be at least 6.0. {i} Even though this package's name refers to Python 2.7 specifically, you can use it with all Python versions that use ''Visual C++ 9.0''. == Microsoft Visual C++ 9.0 standalone: Windows SDK 7.0 (x86, x64, ia64) == This is a standalone version of ''Visual C++ 9.0'' compiler, you don't need to install ''Visual Studio 2008''. /!\ The use of ''Microsoft Visual C++ Compiler for Python 2.7'' is recommended (If you don't need to compile for ia64). See the previous paragraph to install it. * Install ''[[https://www.microsoft.com/download/details.aspx?id=25150|Microsoft .NET Framework 3.5 SP1]]'' if not present. * Install ''[[https://www.microsoft.com/download/details.aspx?id=3138|Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1]]''. Check ''Windows headers and libraries'', ''Visual C++ Compilers'' and ''Win32 Developement Tools'' options only. * The ''setuptools'' Python package version must be at least 24.0. == Microsoft Visual C++ 9.0 standalone: Windows SDK 6.1 (x86, x64, ia64) == This is a standalone version of ''Visual C++ 9.0'' compiler, you don't need to install ''Visual Studio 2008''. /!\ Windows SDK 6.1 was upgraded by Microsoft to Windows SDK 7.0. See the previous paragraph to install it. * Install ''[[https://www.microsoft.com/download/details.aspx?id=25150|Microsoft .NET Framework 3.5 SP1]]'' if not present. * Install ''[[https://www.microsoft.com/download/details.aspx?id=11310|Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5]]''. Check ''Windows headers and libraries'', ''Visual C++ Compilers'' and ''Win32 Development Tools'' options only. * The ''setuptools'' Python package version must be at least 24.0. == Microsoft Visual C++ 9.0 with Visual Studio 2008 (x86, x64, ia64) == ''Visual Studio 2008'' contains ''Visual C++ 9.0'' compiler. ''Distutils'' will automatically detect the compiler and use it. The ''Express'' edition of ''Visual Studio 2008'' only bundles a compiler for x86. == GCC - MinGW (x86) == GCC adapted for Windows MinGW is an alternative C++ compiler that works with all Python versions. From http://www.mingw.org/: MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications. MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs. (It does depend on a number of DLLs provided by Microsoft themselves, as components of the operating system; most notable among these is [[https://www.win7dll.info/msvcrt_dll.htm|MSVCRT.DLL]], the Microsoft C runtime library. Additionally, threaded applications must ship with a freely distributable thread support DLL, provided as part of MinGW itself). MinGW compilers provide access to the functionality of the Microsoft C runtime and some language-specific runtimes. MinGW, being Minimalist, does not, and never will, attempt to provide a POSIX runtime environment for POSIX application deployment on MS-Windows. If you want POSIX application deployment on this platform, please consider Cygwin instead. Primarily intended for use by developers working on the native MS-Windows platform, but also available for cross-hosted use, (see note below -- you may need to follow the "read more" link to see it), MinGW includes: * A port of the GNU Compiler Collection (GCC), including C, C++, ADA and Fortran compilers; * [[https://en.wikipedia.org/wiki/GNU_Binutils|GNU Binutils]] for Windows (assembler, linker, archive manager) * A command-line installer, with optional GUI front-end, (mingw-get) for MinGW and MSYS deployment on MS-Windows * A GUI first-time setup tool (mingw-get-setup), to get you up and running with mingw-get. * Install ''[[http://sourceforge.net/projects/mingw/files/|Minimalist GNU For Windows]]'' into ''C:\MinGW''. |
Line 88: | Line 105: |
* Add ''C:\MinGW\bin'' to ''PATH'' environment variable (With ";" before is PATH is not empty). * Create a ''distutils.cfg'' file with the following content in the folder ''\Lib\distutils'' in Python install directory : {{{ |
* Add ''C:\MinGW\bin'' to the ''PATH'' environment variable (With ";" before if PATH is not empty). * Create a ''distutils.cfg'' file with the following contents in the folder ''\Lib\distutils'' in Python install directory : {{{#!highlight ini |
Line 97: | Line 115: |
== GCC - MSYS2 == GCC for Windows with Extras MSYS2 combines Cygwin (or at least a Cygwin fork) with MinGW - it has a Linux like command line package installer (for non-python things, this is good) named "pacman" ported from Arch Linux. It contains a 4 flavors of Python for Windows: MSYS2 (Cygwin-like) Python 3, MSYS2 (Cygwin-like) Python 2, MinGW (Stand Alone Windows) Python 3, and MinGW (Stand Alone Windows) Python 2. Similarly it has MSYS2 (Cygwin-like) and MinGW flavors of GCC. You can rebuild Python and Python modules using the appropriate gcc. [[http://www.mingw.org/wiki/MSYS|MSYS description From the MinGW Wiki]] MSYS (Minimal SYStem) is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell. An example would be building a library that uses the autotools build system. Users will typically run "./configure" then "make" to build it. The configure shell script requires a shell script interpreter which is not present on Windows systems, but provided by MSYS. [[https://wiki.qt.io/MSYS2|MSYS2 description From the QT Wiki]] MSYS2 (Minimal SYStem 2) is an independent rewrite of MSYS, a (command-line) shell for development usage, and based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 (from "MinGW-builds"), with the aim of better interoperability with native Windows software. It includes: MSYS2-shell and MinGW-w64 Win32 shell & MinGW-w64 Win64 shell. It supports & can work with both 32bit & 64bit multiple toolchains & targets, (for 64bit a 64bit operating system is needed). MSYS2 is a successor of MSYS and MinGW-builds. MSYS2-shell uses "pacman" for downloading packages from repo, and these are GPG signed & verified. [[https://en.wikipedia.org/wiki/Cygwin|Cygwin description from Wikipedia]] Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment. Thus it is possible to launch Windows applications from the Cygwin environment, as well as to use Cygwin tools and applications within the Windows operating context. Cygwin consists of two parts: a dynamic-link library (DLL) as an API compatibility layer providing a substantial part of the POSIX API functionality, and an extensive collection of software tools and applications that provide a Unix-like look and feel. Cygwin was originally developed by Cygnus Solutions, which was later acquired by Red Hat. It is free and open source software, released under the GNU Lesser General Public License version 3. Today it is maintained by employees of Red Hat, NetApp and many other volunteers. '''More MSYS2 Links''' * [[https://sourceforge.net/p/msys2/wiki/Home/|sourceforge.net - msys2 - Wiki Home]] * [[https://sourceforge.net/p/msys2/wiki/Launchers/|sourceforge.net - msys2 - Launchers]] * [[https://github.com/elieux/msys2-launcher|github.com - msys2-launcher]] * [[https://sourceforge.net/p/msys2/wiki/MSYS2%20introduction/|sourceforge.net - msys2 - MSYS2 Introduction]] * [[https://sourceforge.net/p/msys2/wiki/Contributing%20to%20MSYS2/|sourceforge.net - msys2 - Contributing to MSYS2 (How to Build MSYS2 from Source)]] * [[https://sourceforge.net/p/msys2/wiki/MSYS2%20installation/|sourceforge.net - msys2 - MSYS2 Installation (Download and Install)]] * [[https://sourceforge.net/p/msys2/wiki/MSYS2%20re-installation/|sourceforge.net - msys2 - MSYS2 Re-Installation (rebuild once you have a base-installation)]] * [[https://sourceforge.net/p/msys2/mailman/|sourceforge.net - msys2 - MSYS2 Mailing Lists (Support Forums)]] * [[https://sourceforge.net/p/msys2/wiki/Packages/|sourceforge.net - msys2 - MSYS2 Package List]] * mingw/mingw-w64-python2 * mingw/mingw-w64-python3 * msys/python2 * msys/python |
|
Line 99: | Line 156: |
*[[https://support.microsoft.com/en-us/kb/2977003|Microsoft : The latest supported Visual C++ downloads]] : List of up to date ''Visual C++ Redistribuable'' and ''Visual Studio'' packages. | * [[https://support.microsoft.com/kb/2977003|Microsoft : The latest supported Visual C++ downloads]] : List of up-to-date ''Visual C++ Redistributable'' and ''Visual Studio'' packages. * [[http://www.mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands|mingw.org - Interoperability of Libraries Created by Different Compiler Brands]] * [[https://en.wikipedia.org/wiki/X86_calling_conventions|Wikipedia - X86 calling conventions]] * [[http://www.nasm.us/doc/nasmdoc7.html|nasm.us - Output Formats]] * [[http://bugs.python.org/issue4709|bugs.python.org - Mingw-w64 and python on windows x64]] * [[http://www.sciencezero.org/index.php?title=How_to_write_x64_assembly_functions_in_Visual_C++|How to write x64 assembly functions in Visual C++]] - Details on ABI concerns |
Contents
- Which Microsoft Visual C++ compiler to use with a specific Python version ?
-
Compilers Installation and configuration
- Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM)
- Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM)
- Microsoft Visual C++ 10.0 standalone: Windows SDK 7.1 (x86, x64, ia64)
- Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64)
- Microsoft Visual C++ 9.0 standalone: Visual C++ Compiler for Python 2.7 (x86, x64)
- Microsoft Visual C++ 9.0 standalone: Windows SDK 7.0 (x86, x64, ia64)
- Microsoft Visual C++ 9.0 standalone: Windows SDK 6.1 (x86, x64, ia64)
- Microsoft Visual C++ 9.0 with Visual Studio 2008 (x86, x64, ia64)
- GCC - MinGW (x86)
- GCC - MSYS2
- Links
Even though Python is an interpreted language, you may need to install Windows C++ compilers in some cases. Unlike Linux, compilers for Windows are not included by default in the OS.
For example, you will need to use them if you wish to:
Install a non-pure Python package from sources with Pip (if there is no Wheel package provided).
Microsoft provides official C++ compilers called Visual C++, you can find them bundled with Visual Studio or, for some versions, in standalone distributions. Some alternative compilers exist like MinGW, but incompatibilities may occur with a CPython official distribution that is built with Microsoft Visual C++.
The compiler's architecture must be the same as Python's (for example: if you use Python 64bit, you have to use an x64 compiler).
Which Microsoft Visual C++ compiler to use with a specific Python version ?
Each Python version uses a specific compiler version (e.g. CPython 2.7 uses Visual C++ 9.0, CPython 3.3 uses Visual C++ 10.0, etc). So, you need to install the compiler version that corresponds to your Python version :
Visual C++ |
CPython |
14.0 |
3.5, 3.6 |
10.0 |
3.3, 3.4 |
9.0 |
2.6, 2.7, 3.0, 3.1, 3.2 |
Compilers Installation and configuration
Compatible architectures are specified for each compiler in brackets.
Before do anything, install or upgrade the Setuptools Python package. It contain compatibility improvements and add automatic use of compilers:
pip install --upgrade setuptools
Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM)
This is a standalone version of Visual C++ 14.0 compiler, you don't need to install Visual Studio 2015.
Install Microsoft Visual C++ Build Tools 2015. Check Windows 8.1 SDK and Windows 10 SDK options.
The setuptools Python package version must be at least 24.0.
Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM)
Visual Studio 2015 contains Visual C++ 14.0 compiler. Distutils will automatically detect the compiler and use it.
Microsoft Visual C++ 10.0 standalone: Windows SDK 7.1 (x86, x64, ia64)
This is a standalone version of Visual C++ 10.0 compiler, you don't need to install Visual Studio 2010.
Uninstall Microsoft Visual C++ 2010 Redistributable if present (all versions and architectures). If present, it can cause an error on Windows SDK 7.1 installation.
Install Microsoft .NET Framework 4 if not present.
Install Microsoft Windows SDK for Windows 7 and .NET Framework 4. Check Windows headers and libraries, Visual C++ Compilers and Windows Native Code Development\Tools options only.
Install Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1. This updates the compiler to Visual C++ 10.0 SP1.
reinstall Microsoft Visual C++ 2010 Redistributable (for all previously installed architectures).
The setuptools Python package version must be at least 24.0.
Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64)
Visual Studio 2010 contains Visual C++ 10.0 compiler. Distutils will automatically detect the compiler and use it. The Express edition of Visual Studio 2010 only bundles a compiler for x86.
Microsoft Visual C++ 9.0 standalone: Visual C++ Compiler for Python 2.7 (x86, x64)
This is a standalone version of Visual C++ 9.0 compiler, you don't need to install Visual Studio 2008.
The setuptools Python package version must be at least 6.0.
Even though this package's name refers to Python 2.7 specifically, you can use it with all Python versions that use Visual C++ 9.0.
Microsoft Visual C++ 9.0 standalone: Windows SDK 7.0 (x86, x64, ia64)
This is a standalone version of Visual C++ 9.0 compiler, you don't need to install Visual Studio 2008.
The use of Microsoft Visual C++ Compiler for Python 2.7 is recommended (If you don't need to compile for ia64). See the previous paragraph to install it.
Install Microsoft .NET Framework 3.5 SP1 if not present.
Install Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1. Check Windows headers and libraries, Visual C++ Compilers and Win32 Developement Tools options only.
The setuptools Python package version must be at least 24.0.
Microsoft Visual C++ 9.0 standalone: Windows SDK 6.1 (x86, x64, ia64)
This is a standalone version of Visual C++ 9.0 compiler, you don't need to install Visual Studio 2008.
Windows SDK 6.1 was upgraded by Microsoft to Windows SDK 7.0. See the previous paragraph to install it.
Install Microsoft .NET Framework 3.5 SP1 if not present.
Install Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5. Check Windows headers and libraries, Visual C++ Compilers and Win32 Development Tools options only.
The setuptools Python package version must be at least 24.0.
Microsoft Visual C++ 9.0 with Visual Studio 2008 (x86, x64, ia64)
Visual Studio 2008 contains Visual C++ 9.0 compiler. Distutils will automatically detect the compiler and use it. The Express edition of Visual Studio 2008 only bundles a compiler for x86.
GCC - MinGW (x86)
GCC adapted for Windows
MinGW is an alternative C++ compiler that works with all Python versions.
From http://www.mingw.org/:
MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.
MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs. (It does depend on a number of DLLs provided by Microsoft themselves, as components of the operating system; most notable among these is MSVCRT.DLL, the Microsoft C runtime library. Additionally, threaded applications must ship with a freely distributable thread support DLL, provided as part of MinGW itself).
MinGW compilers provide access to the functionality of the Microsoft C runtime and some language-specific runtimes. MinGW, being Minimalist, does not, and never will, attempt to provide a POSIX runtime environment for POSIX application deployment on MS-Windows. If you want POSIX application deployment on this platform, please consider Cygwin instead.
Primarily intended for use by developers working on the native MS-Windows platform, but also available for cross-hosted use, (see note below -- you may need to follow the "read more" link to see it), MinGW includes:
- A port of the GNU Compiler Collection (GCC), including C, C++, ADA and Fortran compilers;
GNU Binutils for Windows (assembler, linker, archive manager)
- A command-line installer, with optional GUI front-end, (mingw-get) for MinGW and MSYS deployment on MS-Windows
- A GUI first-time setup tool (mingw-get-setup), to get you up and running with mingw-get.
Install Minimalist GNU For Windows into C:\MinGW.
Open MinGW Installation Manager, check mingw32-base and mingw32-gcc-g++, and Apply Changes in the Installation menu.
Add C:\MinGW\bin to the PATH environment variable (With ";" before if PATH is not empty).
Create a distutils.cfg file with the following contents in the folder \Lib\distutils in Python install directory :
GCC - MSYS2
GCC for Windows with Extras
MSYS2 combines Cygwin (or at least a Cygwin fork) with MinGW - it has a Linux like command line package installer (for non-python things, this is good) named "pacman" ported from Arch Linux. It contains a 4 flavors of Python for Windows: MSYS2 (Cygwin-like) Python 3, MSYS2 (Cygwin-like) Python 2, MinGW (Stand Alone Windows) Python 3, and MinGW (Stand Alone Windows) Python 2. Similarly it has MSYS2 (Cygwin-like) and MinGW flavors of GCC. You can rebuild Python and Python modules using the appropriate gcc.
MSYS description From the MinGW Wiki
MSYS (Minimal SYStem) is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell.
An example would be building a library that uses the autotools build system. Users will typically run "./configure" then "make" to build it. The configure shell script requires a shell script interpreter which is not present on Windows systems, but provided by MSYS.
MSYS2 description From the QT Wiki
MSYS2 (Minimal SYStem 2) is an independent rewrite of MSYS, a (command-line) shell for development usage, and based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 (from "MinGW-builds"), with the aim of better interoperability with native Windows software. It includes: MSYS2-shell and MinGW-w64 Win32 shell & MinGW-w64 Win64 shell. It supports & can work with both 32bit & 64bit multiple toolchains & targets, (for 64bit a 64bit operating system is needed). MSYS2 is a successor of MSYS and MinGW-builds. MSYS2-shell uses "pacman" for downloading packages from repo, and these are GPG signed & verified.
Cygwin description from Wikipedia
Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment. Thus it is possible to launch Windows applications from the Cygwin environment, as well as to use Cygwin tools and applications within the Windows operating context.
Cygwin consists of two parts: a dynamic-link library (DLL) as an API compatibility layer providing a substantial part of the POSIX API functionality, and an extensive collection of software tools and applications that provide a Unix-like look and feel.
Cygwin was originally developed by Cygnus Solutions, which was later acquired by Red Hat. It is free and open source software, released under the GNU Lesser General Public License version 3. Today it is maintained by employees of Red Hat, NetApp and many other volunteers.
More MSYS2 Links
sourceforge.net - msys2 - Contributing to MSYS2 (How to Build MSYS2 from Source)
sourceforge.net - msys2 - MSYS2 Installation (Download and Install)
sourceforge.net - msys2 - MSYS2 Re-Installation (rebuild once you have a base-installation)
sourceforge.net - msys2 - MSYS2 Mailing Lists (Support Forums)
sourceforge.net - msys2 - MSYS2 Package List
- mingw/mingw-w64-python2
- mingw/mingw-w64-python3
- msys/python2
- msys/python
Links
Microsoft : The latest supported Visual C++ downloads : List of up-to-date Visual C++ Redistributable and Visual Studio packages.
mingw.org - Interoperability of Libraries Created by Different Compiler Brands
How to write x64 assembly functions in Visual C++ - Details on ABI concerns