栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Windows x64上编译Python模块

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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_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

使用distutils

pip
或构建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在各个地方发布的说明进行操作:

  1. 从“ 开始”菜单中 选择“ 所有程序”, 然后选择 Microsoft Windows SDK v7.0”, 然后启动 CMD Shell, 以打开针对Windows SDK优化的命令窗口。
  2. 步骤1等效于在 开始”菜单 或命令提示符(又名
    C:WindowsSystem32cmd.exe
    )中的 “运行” 框中键入以下内容:
    %COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%Microsoft SDKsWindowsv7.0BinSetEnv.cmd"

注意:

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

  1. 然后输入

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

  2. 键入

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

  3. 现在使用您选择的安装方法:
    • pip install pyyaml ntlk
      这是推荐的方法,请参阅ntlk,但是必须安装setuptools和pip。
    • python setup.py install
      对于每个下载的,提取的tarball
    • easy_install pyyaml ntlk
      这是安装鸡蛋的旧方法,也是唯一方法。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号