Differences between revisions 37 and 64 (spanning 27 versions)
Revision 37 as of 2016-05-19 11:26:39
Size: 9287
Editor: Jgoutin
Comment: Update Microsoft Visual C++ Build Tools 2015 version
Revision 64 as of 2017-05-03 22:36:58
Size: 10242
Editor: Ivan Pozdeev
Comment: - MSYS2: this page is for usage instructions, this section has none.
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
||14.0 ||3.5 || ||14.0 ||3.5, 3.6 ||
Line 21: Line 21:
= Distutils notes =
If the package's ''setup.py'' (still) uses ''distutils'' rather than the [[https://docs.python.org/2/library/distutils.html|recommended]] ''setuptools'', you may need extra steps:
Line 22: Line 24:
 * ''distutils'' only supports the very minimum of compiler setups. The sections in this guide corresponding to them explicitly mention ''distutils''.
 * For other setups, you need to run the compilation from the "SDK prompt" of the corresponding toolchain and set the ''DISTUTILS_USE_SDK'' environment variable to a non-empty value.
Line 27: Line 30:
/!\ 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: Build Tools for Visual Studio 2017 (x86, x64, ARM, ARM64) ==
This is a standalone version of ''Visual C++ 14.0'' compiler, you don't need to install ''Visual Studio 2017''.

 * Install ''[[https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017|Microsoft Build Tools for Visual Studio 2017]]''.
 * The ''setuptools'' Python package version must be at least 34.4.0.

== Microsoft Visual C++ 14.0 with Visual Studio 2017 (x86, x64, ARM, ARM64) ==
''Visual Studio 2017'' contains ''Visual C++ 14.0'' compiler. The ''setuptools'' Python package version must be at least 34.4.0.
Line 30: Line 48:
 * Install ''[[https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/|Microsoft Visual C++ Build Tools 2015]]''. Check ''Windows 8.1 SDK'' and ''Windows 10 SDK'' options.  * 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 32: Line 51:
You have to run your commands from ''Visual C++ Build Tools Command Prompt'' (''C:\Program Files (x86)\Microsoft Visual C++ Build Tools\'') each time you want compile with Python. /!\ Visual C++ Build Tools 2015 was upgraded by Microsoft to Build Tools for Visual Studio 2017. See the previous paragraph to install it.
Line 34: Line 53:
(!) If you want automatic use of this compiler with Python, you can also edit the ''C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'' and replace its contents with the following text :

{{{#!highlight bat
rem Vcvarsall for Visual C++ Build Tools 2015
@echo off
set vcprogramfiles=%ProgramFiles(x86)%
if "%vcprogramfiles%"=="" set vcprogramfiles=%ProgramFiles%
call "%vcprogramfiles%\Microsoft Visual C++ Build Tools\vcbuildtools.bat" %*
}}}
Line 54: Line 64:
 * The ''setuptools'' Python package version must be at least 24.0.
Line 55: Line 66:
You have to run your commands from ''Windows SDK 7.1 Command Prompt'' (''C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd'') each time you want to compile with Python. By default, SetEnv.cmd uses the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments to change it.

(!) If you want automatic use of this compiler with Python, you can also edit the ''C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'' file and replace its contents with the following text :

{{{#!highlight bat
rem Vcvarsall for Windows SDK 7.1
@echo off
if /i "%1" == "x64" (
    set vcvararch=x64
) else if /i "%1" == "amd64" (
    set vcvararch=x64
) else if /i "%1" == "x86_amd64" (
    set vcvararch=x64
) else if /i "%1" == "ia64" (
    set vcvararch=ia64
) else if /i "%1" == "x86_ia64" (
    set vcvararch=ia64
) else (
    set vcvararch=x86
)
set vcprogramfiles=%ProgramFiles(x86)%
if "%vcprogramfiles%"=="" set vcprogramfiles=%ProgramFiles%
call "%vcprogramfiles%\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /%vcvararch%
}}}
Line 86: Line 73:
 * 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 to update it:  * The ''setuptools'' Python package version must be at least 6.0.
Line 88: Line 75:
{{{
pip install --upgrade setuptools
}}}
Line 92: Line 76:

{i} This package always installs its start menu shortcuts for the installing user (i.e. an administrator) only. To get them for all users, run the installation like this: ''msiexec /i <full path to .msi> ALLUSERS=1''.
Line 100: Line 86:
 * Set the ''DISTUTILS_USE_SDK'' environment variable to 1.

You have to run your commands from ''Windows SDK 7.0 Command Prompt'' (''C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd'') each time you want to compile with Python. By default, SetEnv.cmd uses the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments to change it.
 * The ''setuptools'' Python package version must be at least 24.0.
Line 110: Line 94:
 * Install ''[[https://www.microsoft.com/download/details.aspx?id=11310|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.
 * Set the ''DISTUTILS_USE_SDK'' environment variable to 1.

Yo
u have to run your commands from ''Windows SDK 6.1 Command Prompt'' (''C:\Program Files (x86)\Microsoft SDKs\Windows\v6.1\Bin\SetEnv.cmd'') each time you want to compile with Python. By default, SetEnv.cmd uses the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments to change it.
 * 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.
Line 118: Line 100:
== MinGW (x86) == == GCC - MinGW (x86) ==
GCC adapted for Windows
Line 120: Line 104:

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.
Line 133: Line 132:
= Links =
 * [[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.

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:

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

Distutils notes

If the package's setup.py (still) uses distutils rather than the recommended setuptools, you may need extra steps:

  • distutils only supports the very minimum of compiler setups. The sections in this guide corresponding to them explicitly mention distutils.

  • For other setups, you need to run the compilation from the "SDK prompt" of the corresponding toolchain and set the DISTUTILS_USE_SDK environment variable to a non-empty value.

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: Build Tools for Visual Studio 2017 (x86, x64, ARM, ARM64)

This is a standalone version of Visual C++ 14.0 compiler, you don't need to install Visual Studio 2017.

Microsoft Visual C++ 14.0 with Visual Studio 2017 (x86, x64, ARM, ARM64)

Visual Studio 2017 contains Visual C++ 14.0 compiler. The setuptools Python package version must be at least 34.4.0.

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.

/!\ Visual C++ Build Tools 2015 was upgraded by Microsoft to Build Tools for Visual Studio 2017. See the previous paragraph to install it.

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.

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.

{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.

{i} This package always installs its start menu shortcuts for the installing user (i.e. an administrator) only. To get them for all users, run the installation like this: msiexec /i <full path to .msi> ALLUSERS=1.

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.

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.

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 :

   1 [build]
   2 compiler=mingw32
   3 
   4 [build_ext]
   5 compiler=mingw32

WindowsCompilers (last edited 2023-06-09 12:03:05 by MarcAndreLemburg)

Unable to edit the page? See the FrontPage for instructions.