您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Windows x64上编译Python模块

在Windows x64上编译Python模块

这个答案已经超过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_SDKMSSdk环境变量。请参阅Fix vcvarsall.bat,以v90而不是sdk7安装Python-2.7 x64扩展

使用Windows SDK v7.0编译器,打开SDK shell并调用

C:\> setenv /release /x64
C:\> set DISTUTILS_USE_SDK=1
C:\> 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也依赖于LAPACKLAPACK也依赖于BLAS,这是构建NumPy的另一个障碍。但是,OpenBLAS二进制文件已经使用LAPACK进行了编译,因此该障碍已被消除。请参阅卡尔·克莱夫纳(Carl Kleffner)的静态MinGW-w64工具链,以在Windows上使用OpenBLAS构建NumPy-解决了一些ABI不兼容问题,并链接到正确的Microsoft Visual C Common Runtime库(msvcr90.dll适用于Python-2.7)。

推荐的编译扩展方式是使用与编译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的版本。 egPython 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32表示它是使用VS 2008 C ++构建的。您可以从源代码自己构建Python,但这也是一项艰巨的任务。通常,不建议混合使用编译器运行时,尽管实际上您可能会发现它们仍然可以运行。

如果您决心使用GNU GCC,那么您将不得不使用mingw-w64,因为MinGW仅适用于本机x86应用程序,不适用于AMD64 / x86-64。您将需要

但是最后,您 仍然 需要链接到构建python的运行时msvcr90.dll,因此您将需要Visual C ++ 2008 redistributable注意:mingw-w64使用的Windows GCCmsvcrt.dllmsvcr90.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在各个地方发布的说明进行操作:

%COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd"

注意:/E:ON启用命令扩展的标志和/V:ON启用延迟的变量扩展的标志都是运行所必需的SetEnv.cmd,否则您将得到一条消息,提示未安装x64编译器&c。

然后输入setenv /Release /x64,它将专门为Windows 7 x64版本(相对于认为debug或x86)设置SDK环境变量。

键入set DISTUTILS_USE_SDK=1hit return,然后键入set MSSdk=1并返回,以distutils.msvccompiler表明您正在使用SDK,并且SDK将确定所有环境变量。

[1]在Windows上构建C和C ++扩展 [2] distutils.msvccompiler- Microsoft编译器 [3]Python开发指南:入门:Windows [4][此python使用哪个版本的VisualStudio

python 2022/1/1 18:42:24 有302人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶