Differences between revisions 3 and 16 (spanning 13 versions)
Revision 3 as of 2015-11-12 09:31:28
Size: 5927
Editor: Jgoutin
Comment:
Revision 16 as of 2015-11-13 13:35:24
Size: 7378
Editor: Jgoutin
Comment: Add SDK 7.0
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
'''THIS PAGE IS WORK IN PROGRESS''' <<TableOfContents()>>
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 17: Line 17:
||'''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||
||'''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 = = Compilers Installation and configuration =
Line 30: Line 30:
||Itanium||ia64|| ||64Bit Itanium||ia64||
Line 32: Line 32:
== Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (32bit, 64bit) == == Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM) ==
Line 37: Line 37:
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=49512|Microsoft Visual C++ Build Tools 2015]]''.
Line 38: Line 39:
 * [[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]]
== Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM) ==
Line 41: Line 41:
== Microsoft Visual C++ 10.0/2010 standalone version: Windows SDK 7.1 (x86, x64, ia64) == ''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 46: Line 48:
 * 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.
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=17718|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]]''. Check ''Windows headers and libraries'' and ''Visual C++ Compilers'' options only.
Line 51: Line 53:
 * 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:
 * Edit ''C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'' and replace its content with the following text :
Line 55: Line 56:
rem vcvarsall changes for automatic use of "Windows 7.1 SDK" with Distutils on Python rem Vcvarsall for use Windows SDK 7.1
Line 58: Line 59:

if "%1" == "" goto x86
if /i %1 == x86 goto x86
if /i %1 == amd64 goto amd64
if /i %1 == x64 goto amd64
if /i %1 == ia64 goto ia64

:x86
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /release
goto :eof

:amd64
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release
goto :eof

:ia64
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /ia64 /release
goto :eof
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% /release
Line 77: Line 76:
 * ''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.
If you don't want to modify ''vcvarsall.bat'', you have to run your commands from ''Windows SDK 7.1 Command Prompt'' (''C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd'') each time you want compile with Python.
Line 82: Line 79:
== 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, ia64) ==
Line 86: Line 86:
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/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:
{{{
pip install --upgrade setuptools
}}}
Line 88: Line 92:
 * 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]]''.
Note: Even if this compiler specify Python 2.7, you can use it with all Python versions using ''Visual C++ 9.0''.
Line 91: Line 94:
== 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''.

 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=25150|Microsoft .NET Framework 3.5 SP1]]'' if not present.
 * Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=3138|Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1]]''.
 * Create a file named ''vcvarsall.bat'' in ''C:\Program Files\Microsoft Visual Studio 9.0\VC\'' containing the following text :
{{{
@echo off
rem Vcvarsall for use Windows SDK 7.0
set DISTUTILS_USE_SDK=1
set MSSdk=1
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.0\Bin\SetEnv.cmd" /%vcvararch% /release
}}}

== 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 98: Line 134:
 [build]
 compiler=mingw32
 
 [build_ext]
 compiler=mingw32
[build]
compiler=mingw32

[build_ext]
compiler=mingw32

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 :

  • Install a non-pure Python package from sources with Pip (If there is no Wheel package provided).

  • Compile a Cython file.

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 you 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)

Work in progress...

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

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.

If you want automatic use of this compiler with Python :

  • Edit C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat and replace its content with the following text :

@echo off
rem Vcvarsall for use Windows SDK 7.1
set DISTUTILS_USE_SDK=1
set MSSdk=1
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% /release

If you don't want to modify vcvarsall.bat, you have to run your commands from 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++ 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, ia64)

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

pip install --upgrade setuptools

Note: 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.

@echo off
rem Vcvarsall for use Windows SDK 7.0
set DISTUTILS_USE_SDK=1
set MSSdk=1
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.0\Bin\SetEnv.cmd" /%vcvararch% /release

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 :

[build]
compiler=mingw32

[build_ext]
compiler=mingw32

Links

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

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