更新: 这个答案已经超过5年了!即将弃用Python-2.7,因此您真正需要的是用于Python-3的Microsoft Visual
C编译器。在MS
Windows编译器上查看此Python
Wiki。带有VC-14.0的MS Build Tools
2015是构建适用于Python-3.5和3.6的扩展所需要的。您可以安装包含VC-14.0的较旧的MS构建工具2015,也可以安装2017的较新的MS构建工具-单击链接,然后向下滚动,直到找到Visual Studio
2017的构建工具-也包含VC-14.0。
同样,如果您的pip和setuptools版本是最新的,那么您可以忽略所有那些愚蠢的老派MSSDK废话。 特别是如果您使用的是VC for Python
2.7或MS构建工具2015。从setuptools-24开始,它只是知道希望在哪里寻找这些编译器。
更新:
正如Zooba在下面提到的那样,现在可以从Microsoft获得用于Python-2.7的免费x86和AMD64(x86-64)VC90
c编译器。
更新: 修补vcvarsall.bat
程序可直接pip
在任何外壳中使用SDK
v7.0中的x64编译器,而不是按以下说明使用SDK外壳以及设置DISTUTILS_USE_SDK
和MSSdk
环境变量。请参阅Fix
vcvarsall.bat,以v90而不是sdk7安装Python-2.7
x64扩展。
tl; dr: 使用Windows SDK v7.0编译器,打开SDK shell并调用
C:> setenv /release /x64C:> set DISTUTILS_USE_SDK=1C:> MSSdk=1
使用distutilspip
或构建Python 2.7.x扩展easy_install
。请参阅带有pip的Python
x64软件包扩展,MSVC 2008 Express&SDK
7。
注意 :您可以使用Christoph Gohlke的Intel
MKL安装经过优化的Numpy。对于virtualenv,请尝试将二进制分发窗口安装程序转换为可以通过pip安装的wheel文件。从源代码构建NumPy
并
非易事。随着GotoBLAS的分支OpenBLAS的最新推出和上市,它成为可能。有针对Windows
x86和x86-64的优化二进制文件,以及比GotoBLAS或ATLAS相对容易编译的源代码。
注意 :过去我不建议从源代码编译NumPy,因为您必须为您的平台优化BLAS,这非常耗时,并且参考BLAS(FORTRAN)或CBLAS(C / C
++)实现的性能相对较低。NumPy也依赖于LAPACK,LAPACK也依赖于BLAS,这是构建NumPy的另一个障碍。但是,OpenBLAS二进制文件已经使用LAPACK进行了编译,因此该障碍已被消除。请参阅卡尔·克莱夫纳(Carl
Kleffner)的静态MinGW-w64工具链,以在Windows上使用OpenBLAS构建NumPy-他解决了一些ABI不兼容问题,并链接到正确的Microsoft Visual C Common
Runtime库(
msvcr90.dll适用于Python-2.7)。
接下来是关于在Windows 7 x64上安装Python扩展的主要问题。
推荐的编译扩展方式是使用与编译Python共享库[1-3]相同的编译器。适用于Windows的官方Python
2.7.x是使用Microsoft Visual Studio 2008
Professional的Microsoft Visual C ++编译器版本9.0 [4](aka
MSVC90或简称VC90)编译的,您可以从Microsoft
DreamSpark免费获得。显然,默认情况下未安装x64编译器,因此请确保将它们与x86编译器一起安装。
注意:MS Visual Studio 2008可能不再可用,但是MS Visual Studio
2010将允许您使用MSVC90工具链(如果已安装),可以从Windows SDK7安装。
当您从命令行执行python解释器时,可以通过查看标头来判断Python的版本。 eg :
Python 2.7.3 (default, Apr 102012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32表示它是使用VS 2008 C
++构建的。您可以从源代码自己构建Python,但这也是一项艰巨的任务。通常,不建议混合使用编译器运行时,尽管实际上您可能会发现它们仍然可以运行。
如果您决心使用GNU
GCC,那么您将不得不使用mingw-w64,因为MinGW仅适用于本机x86应用程序,不适用于AMD64
/ x86-64。您将需要
- 创建一个distutils配置文件以指定mingw编译器,
- 从distutils.cygwinccompiler.Mingw32ccompiler中删除-mno-cygwin错误,并
- 使用
pexports.exe
msys或gendef.exe
msys2导出库定义文件,并libpython27.a
使用dlltool.exe
(msys / msys2)制作一个静态库(但最新的Windows官方Python版本已经在Python27lib
文件夹中包含此文件,谢谢!)。
但是最后,您 仍然 需要链接到构建python的运行时
msvcr90.dll,因此您将需要Visual C ++ 2008
redistributable。
注意:mingw-w64使用的Windows
GCC
msvcrt.dll与
msvcr90.dll或更高版本不一样。
如果你想这样做免费的,你可以使用微软的Visual C ++ 2008速成SP1,但你将需要添加的Windows SDK 7 .NET框架3.5
SP1,因为Express版本确实 不 具备的x64编译器。使用VS2008
Express&SDK 7安装x64 C ++扩展的过程与cython网站上针对Windows
x64扩展的安装过程非常相似。
注意:不再提供或不支持MS Visual Studio 2008 Express。
仅供参考:您不一定需要Visual
Studio才能使用Microsoft编译器进行构建。可以通过相应的SDK包免费获得它们。
CL.EXE是编译器可执行文件,但是您将必须设置通常由Autotools或其他某些工具(例如CMAKE)配置的平台选项。CMAKE在MSVC上运行良好,但是Autotools
AFAIK在MSVC上不起作用,并且需要一些POSIX环境和实用程序,这些在Windows中可以在MSYS中使用。
对于许多使用distutils或setuptools的Python软件包,它们可以使用Windows SDK
7编译扩展,方法是按照参考文档和Wiki在各个地方发布的说明进行操作:
- 从“ 开始”菜单中 选择“ 所有程序”, 然后选择 “ Microsoft Windows SDK v7.0”, 然后启动 CMD Shell, 以打开针对Windows SDK优化的命令窗口。
- 步骤1等效于在 “ 开始”菜单 或命令提示符(又名
C:WindowsSystem32cmd.exe
)中的 “运行” 框中键入以下内容:%COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%Microsoft SDKsWindowsv7.0BinSetEnv.cmd"
注意:
/E:ON启用命令扩展的标志和
/V:ON启用延迟的变量扩展的标志都是运行所必需的
SetEnv.cmd,否则您将得到一条消息,提示未安装x64编译器&c。
然后输入
setenv /Release /x64
,它将专门为Windows 7 x64版本(相对于默认为debug或x86)设置SDK环境变量。键入
set DISTUTILS_USE_SDK=1
hit return,然后键入set MSSdk=1
并返回,以distutils.msvccompiler
表明您正在使用SDK,并且SDK将确定所有环境变量。- 现在使用您选择的安装方法:
pip install pyyaml ntlk
这是推荐的方法,请参阅ntlk,但是必须安装setuptools和pip。python setup.py install
对于每个下载的,提取的tarballeasy_install pyyaml ntlk
这是安装鸡蛋的旧方法,也是唯一方法。
[1]在Windows上构建C和C ++扩展
[2] distutils.msvccompiler-
Microsoft编译器
[3]
Python开发指南:入门:Windows
[4][此python使用哪个版本的VisualStudio?



