Size: 4749
Comment: Page creation
|
Size: 5674
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
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 22: | Line 22: |
Line 25: | Line 24: |
== Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (32bit, 64bit) == | Compatible architectures is specified for each compiler between brackets. This table resume architecture names correspondence: ||'''Windows'''||'''Architecture'''|| ||32Bit||x86|| ||64Bit||x64|| ||Itanium||ia64|| == Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (x86, x64) == |
Line 30: | Line 37: |
* [[https://www.microsoft.com/en-us/download/details.aspx?id=49512|Microsoft Visual C++ Build Tools 2015]] | |
Line 31: | 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++ 10.0/2010 standalone version: Windows SDK 7.1 (32bit, 64bit) == |
== Microsoft Visual C++ 10.0/2010 standalone version: Windows SDK 7.1 (x86, x64, ia64) == |
Line 38: | Line 43: |
* 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. | * Uninstall ''Microsoft Visual C++ 2010 Redistribuable'' if present (all versions and architecture). If present, it can cause error on Windows SDK 7.1 installation. |
Line 40: | Line 45: |
* 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): |
* 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: |
Line 43: | Line 52: |
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /release set DISTUTILS_USE_SDK=1 set MSSdk=1 |
@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 |
Line 47: | Line 67: |
* Install ''[[https://www.microsoft.com/en-us/download/details.aspx?id=26999|Microsoft Visual C++ 2010 Redistribuable]]'' (32bit and/or 64bit). | * ''Distutils'' will now automatically call the compiler when needed. |
Line 49: | Line 69: |
== Microsoft Visual C++ 9.0/2008 standalone version: Visual C++ Compiler for Python 2.7 (32bit, 64bit) == | 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) == |
Line 53: | Line 76: |
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 55: | Line 82: |
* 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 58: | Line 84: |
== MinGW (32Bit only) == | == MinGW (x86) == |
Line 61: | Line 87: |
* 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 65: | Line 91: |
[build] compiler=mingw32 [build_ext] compiler=mingw32 |
[build] compiler=mingw32 [build_ext] compiler=mingw32 |
THIS PAGE IS WORK IN PROGRESS
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 the CPython implementation is compiled with Microsoft official compilers and compatibility may not be perfect.
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 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 |
Compilers Installation
Compatible architectures is specified for each compiler between brackets.
This table resume architecture names correspondence:
Windows |
Architecture |
32Bit |
x86 |
64Bit |
x64 |
Itanium |
ia64 |
Microsoft Visual C++ 14.0/2015 standalone version: Visual C++ Build Tools 2015 (x86, x64)
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++ 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 Microsoft .NET Framework 4 if not present.
Install 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 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.
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
Note: Even if this compiler specify Python 2.7, you can use it with all Python versions using Visual C++ 9.0.
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 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
Microsoft : The latest supported Visual C++ downloads : List of up to date Visual C++ Redistribuable and Visual Studio packages.