Differences between revisions 1 and 31 (spanning 30 versions)
Revision 1 as of 2015-11-10 16:26:53
Size: 4749
Editor: Jgoutin
Comment: Page creation
Revision 31 as of 2015-12-03 11:00:08
Size: 8867
Editor: Jgoutin
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
'''THIS PAGE IS WORK IN PROGRESS''' <<TableOfContents()>>
Line 8: Line 8:
 * Compile a [[http://cython.org/|Cython]] file.  * Compile a [[http://cython.org/|Cython]] or [[https://pypi.python.org/pypi/Pyrex|Pyrex]] file.
Line 11: Line 11:
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. Some alternates compilers exists like [[http://mingw.org/|MinGW]], but some incompatibilities may occur with CPython official distribution which is build with Microsoft Visual C++.
Line 13: Line 13:
The compiler architecture must be the same as Python (Example: If you use Python 64bit, you have to use a 64bit compiler) The compiler architecture must be the same as Python (Example: If you use Python 64bit, you have to use a x64 compiler).
Line 16: Line 16:
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||
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 your Python version :
||'''Visual C++'''||'''CPython'''||
||14.0||3.5||
||10.0||3.3, 3.4||
||9.0||
2.6, 2.7, 3.0, 3.1, 3.2||
Line 22: Line 22:
= Compilers Installation and configuration =
Line 23: Line 24:
= Compilers Installation = Compatible architectures is specified for each compiler between brackets.
Line 25: Line 26:
== Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (32bit, 64bit) == This table resume architecture names correspondence:
||'''Windows'''||'''Architecture'''||
||32Bit||x86||
||64Bit||x64||
||64Bit Itanium||ia64||
Line 27: Line 32:
'''Work in progress...''' == Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM) ==
Line 30: Line 35:
 * Install ''[[https://www.microsoft.com/download/details.aspx?id=49983|Microsoft Visual C++ Build Tools 2015]]''. Check ''Windows 8.1 SDK'' and ''Windows 10 SDK'' options.
Line 31: Line 37:
 * [[https://www.microsoft.com/en-us/download/details.aspx?id=49512|Microsoft Visual C++ Build Tools 2015]]
 * [[https://www.microsoft.com/en-us/download/details.aspx?id=48145|Visual C++ Redistributable for Visual Studio 2015]]
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.
Line 34: Line 39:
== Microsoft Visual C++ 10.0/2010 standalone version: Windows SDK 7.1 (32bit, 64bit) == (!) 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 content 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" %*
}}}

== Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM) ==

''Visual Studio 2015'' contain ''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) ==
Line 38: Line 56:
 * Uninstall ''Microsoft Visual C++ 2010 Redistribuable'' if present (in x86 (32bits) and x64 version). 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 others.
 * Make a back up and edit the following file: ''C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'' and replace its content with (Replace ''/x86'' by ''/x64'' if you want compile for Python 64bits):
{{{
 CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /release
 set DISTUTILS_USE_SDK=1
 set MSSdk=1
 * 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/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'' and ''Visual C++ Compilers'' 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 update compiler to Visual C++ 10.0 SP1.
 * reinstall ''[[https://www.microsoft.com/download/details.aspx?id=26999|Microsoft Visual C++ 2010 Redistribuable]]'' (In all previously installed architectures).

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 compile with Python. By default, SetEnv.cmd use the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments for 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 content 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 47: Line 85:
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=26999|Microsoft Visual C++ 2010 Redistribuable]]'' (32bit and/or 64bit).
Line 49: Line 86:
== Microsoft Visual C++ 9.0/2008 standalone version: Visual C++ Compiler for Python 2.7 (32bit, 64bit) == == Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64) ==

''Visual Studio 2010'' contain ''Visual C++ 10.0'' compiler. ''Distutils'' will automatically detect the compiler and use it.

== Microsoft Visual C++ 9.0 standalone: Visual C++ Compiler for Python 2.7 (x86, x64) ==
Line 53: Line 94:
Note: Even if this compiler specify Python 2.7, you can use it with all Python version Using ''Visual C++ 9.0''.  * Install ''[[https://www.microsoft.com/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:
{{{
pip install --upgrade setuptools
}}}
Line 55: Line 100:
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=26368|Microsoft Visual C++ 2008 Redistribuable]]'' (32bit and/or 64bit).
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=44266|Microsoft Visual C++ Compiler for Python 2.7]]''.
{i} Even if this compiler specify Python 2.7, you can use it with all Python versions using ''Visual C++ 9.0''.
Line 58: Line 102:
== MinGW (32Bit only) ==
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++.
== Microsoft Visual C++ 9.0 standalone: Windows SDK 7.0 (x86, x64, ia64) ==

This is the 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. See the previous paragraph for 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'' and ''Visual C++ Compilers'' options only.

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 compile with Python. By default, SetEnv.cmd use the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments for change it.

== Microsoft Visual C++ 9.0 standalone: Windows SDK 6.1 (x86, x64, ia64) ==

This is the 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 for 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|Windows SDK for Windows Server 2008 and .NET Framework 3.5]]''. Check ''Windows headers and libraries'' and ''Visual C++ Compilers'' options only.

You 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 compile with Python. By default, SetEnv.cmd use the ''x86'' architecture, use ''/x64'' or ''/ia64'' arguments for change it.

== Microsoft Visual C++ 9.0 with Visual Studio 2008 (x86, x64, ia64) ==
''Visual Studio 2008'' contain ''Visual C++ 9.0'' compiler. ''Distutils'' will automatically detect the compiler and use it.

== MinGW (x86) ==
MinGW is an alternate C++ compiler that work with all Python versions.
Line 61: Line 130:
 * Open M''inGW Installation Manager'', check ''mingw32-base'' and ''mingw32-gcc-g++'', and ''Apply Changes'' in the ''Installation'' menu.  * Open ''MinGW Installation Manager'', check ''mingw32-base'' and ''mingw32-gcc-g++'', and ''Apply Changes'' in the ''Installation'' menu.
Line 64: Line 133:
{{{
 [build]
 compiler=mingw32
 
 [build_ext]
 compiler=mingw32
{{{#!highlight ini
[build]
compiler=mingw32

[build_ext]
compiler=mingw32
Line 73: Line 142:
 *[[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++ Redistribuable'' and ''Visual Studio'' packages.

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.

By example, you will need to use them if you want :

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 MinGW, but some incompatibilities may occur with CPython official distribution which is build with Microsoft Visual C++.

The compiler architecture must be the same as Python (Example: If you use Python 64bit, you have to use a x64 compiler).

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 your Python version :

Visual C++

CPython

14.0

3.5

10.0

3.3, 3.4

9.0

2.6, 2.7, 3.0, 3.1, 3.2

Compilers Installation and configuration

Compatible architectures is specified for each compiler between brackets.

This table resume architecture names correspondence:

Windows

Architecture

32Bit

x86

64Bit

x64

64Bit Itanium

ia64

Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM)

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

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.

(!) 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 content with the following text :

   1 rem Vcvarsall for Visual C++ Build Tools 2015
   2 @echo off
   3 set vcprogramfiles=%ProgramFiles(x86)%
   4 if "%vcprogramfiles%"=="" set vcprogramfiles=%ProgramFiles%
   5 call "%vcprogramfiles%\Microsoft Visual C++ Build Tools\vcbuildtools.bat" %*

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

Visual Studio 2015 contain 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 the standalone version of Visual C++ 10.0 compiler, you don't need to install Visual Studio 2010.

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 compile with Python. By default, SetEnv.cmd use the x86 architecture, use /x64 or /ia64 arguments for 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 content with the following text :

   1 rem Vcvarsall for Windows SDK 7.1
   2 @echo off
   3 if /i "%1" == "x64" (
   4     set vcvararch=x64
   5 ) else if /i "%1" == "amd64" (
   6     set vcvararch=x64
   7 ) else if /i "%1" == "x86_amd64" (
   8     set vcvararch=x64
   9 ) else if /i "%1" == "ia64" (
  10     set vcvararch=ia64
  11 ) else if /i "%1" == "x86_ia64" (
  12     set vcvararch=ia64
  13 ) else (
  14     set vcvararch=x86
  15 )
  16 set vcprogramfiles=%ProgramFiles(x86)%
  17 if "%vcprogramfiles%"=="" set vcprogramfiles=%ProgramFiles%
  18 call "%vcprogramfiles%\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /%vcvararch%

Microsoft Visual C++ 10.0 with Visual Studio 2010 (x86, x64, ia64)

Visual Studio 2010 contain Visual C++ 10.0 compiler. Distutils will automatically detect the compiler and use it.

Microsoft Visual C++ 9.0 standalone: Visual C++ Compiler for Python 2.7 (x86, x64)

This is the standalone version of Visual C++ 9.0 compiler, you don't need to install Visual Studio 2008.

pip install --upgrade setuptools

{i} Even if this compiler specify Python 2.7, you can use it with all Python versions using Visual C++ 9.0.

Microsoft Visual C++ 9.0 standalone: Windows SDK 7.0 (x86, x64, ia64)

This is the 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. See the previous paragraph for install it.

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 compile with Python. By default, SetEnv.cmd use the x86 architecture, use /x64 or /ia64 arguments for change it.

Microsoft Visual C++ 9.0 standalone: Windows SDK 6.1 (x86, x64, ia64)

This is the 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 for install it.

You 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 compile with Python. By default, SetEnv.cmd use the x86 architecture, use /x64 or /ia64 arguments for change it.

Microsoft Visual C++ 9.0 with Visual Studio 2008 (x86, x64, ia64)

Visual Studio 2008 contain Visual C++ 9.0 compiler. Distutils will automatically detect the compiler and use it.

MinGW (x86)

MinGW is an alternate C++ compiler that work with all Python versions.

  • Install Minimalist GNU For Windows in 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 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 :

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

Links

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

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