在64位Windows上使用Enthought Canopy进行cython工作的官方方法是什么?

时间:2015-03-10 08:48:38

标签: python cython enthought canopy

我在Windows 64位计算机上安装了带有cython 0.22(通过Canopy包管理器安装)的Python 2.7的“Enthought Canopy”v1.5发行版。尝试编译cython文件会导致以下错误:

building 'my_cython_extension' extension
error: Could not find Visual Studio 2008 in your path.

If you do not have Visual Studio 2008 installed, you can use
the MinGW compiler instead. To install mingw, do:
    enpkg mingw
To use the MinGW compiler to build an extension module, use
the '-c' flag, e.g.:
    python setup.py build_ext -c mingw64
Note that building Python extensions with MinGW is not officially
supported, although it is known to work in many cases.

Visual Studio 2008不再可用,Visual Studio 2008 Express不包含64位编译器。我已经读过有必要使用编译Python的相同编译器编译cython,这将使用较新版本的Visual Studio进行排除。此外,该消息明确指出MinGW未得到官方支持。

我已根据Microsoft Visual C++ Compiler for Python 2.7尝试安装“Cython Wiki”,但这对使上述错误消息消失没有影响。我已经读过更新setuptools可能会修复此错误(因为它可以在不同的位置找到编译器,而不是旧版本希望找到它),但这对我不起作用,另外Enthought有{{ 3}}那个:

  

已支持Setuptools 0.6,更高版本尚未与Enthought安装程序兼容。

...所以更新setuptools可能会破坏Canopy中的内容。

最后,我尝试安装“MS Windows SDK for Windows 7和.NET Framework 3.5 SP1”,稍后将在cython Wiki中编写,但这对于使消息消失没有任何影响,此外它还是一个巨大的如果可能的话,我宁愿不为编译器安装笨重的软件包。

那么,有没有办法让“Visual C ++编译器for Python 2.7”与cython和Enthought Canopy一起使用?如果没有,安装和配置cython编译器的官方方式是什么?

2 个答案:

答案 0 :(得分:3)

我花了一天的时间来弄清楚如何使这个工作,我真诚地希望有一个更好的方式,我很乐意听到,但这就是为我完成工作的原因:

1)安装Microsoft Visual C ++ 2008 Express版 - 您应该通过Google搜索找到直接下载链接。

2)下载适用于Windows 7和.NET Framework 3.5 SP1(ISO)的#34; Microsoft Windows SDK"图像(请务必从here

中选择64位版本GRMSDKX_EN_DVD.iso

3)用7-zip解压缩iso,或用您首选的软件安装/刻录

4)运行setup.exe并安装。您可以安全地取消选择除" Visual C ++编译器"之外的所有内容。和#34; Windows标题和库"

5)将文件C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat复制到文件夹C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\并将其重命名为vcvarsamd64.bat

6)不确定是否有必要,但您可能需要在Visual Studio命令提示符中运行以下命令,如cython wiki中所述

set DISTUTILS_USE_SDK=1
setenv /x64 /release

注1:步骤1似乎是必要的,因为.net 3.5的64位Windows SDK似乎没有附带vcvarsall.bat文件。

注意2:步骤5是必要的,因为Visual C ++ 2008 Express附带的vcvarsall.bat指向64位编译器的错误位置。

答案 1 :(得分:2)

(Enthought Support Here)

有关最新信息,请参阅我们的知识库,该知识库总结了问题并提供了building extensions on Windows (as well other platforms)所需组件的有用链接

关于用于Python 2.7"的Microsoft Visual C ++编译器,我们正在努力在下一版本中将Canopy的Python版本更新到2.7.9,其中包括支持Microsoft&的所需更改#39;新的编译器。我们预计Canopy 1.5.3将于下周某个时候发布。

现在使用SDK,我们建议的步骤是:

  1. 将Windows SDK for Python 2.7下载为web installerDVD ISO
  2. 安装SDK。

  3. 安装SDK后,您需要启动 SDK命令提示符并在编译扩展程序之前设置两个环境变量:

    set DISTUTILS_USE_SDK=1 
    setenv /x64 /release
    

    假设您没有更改默认的SDK安装路径,则应如下所示:

    C:\Program Files\Microsoft SDKs\Windows\v7.0>set DISTUTILS_USE_SDK=1
    C:\Program Files\Microsoft SDKs\Windows\v7.0>setenv /x64 /release
    

    (注意:如果在32位系统上,您可能需要将/x64交换为/x86。)

  4. 根据我的理解,使用 SDK命令提示符设置这些变量将有助于避免vcvarsall.bat周围的所有额外配置/手术。