我如何使用cython编译扩展?

我正在尝试在Python 2.6 64位版本的Windows 7 64位机器上从示例页面编译一个简单的cython扩展。 我从Gohlke的页面安装了Cython 0.15.1 for Windows 64位版本。

基本上, 这里和这里的答案不是我的select,因为我真的需要Python 64位版本来解决更大的内存。 此外,因为我正在尝试使用.NET 4的Microsoft SDK进行编译,所以我不能在后一种解决scheme中使用该方法。

我尝试了这里的步骤,并观察绿色的窗口,但编译现在抛出cannot find vcvarsall.bat错误。 以下是我尝试的命令序列:

 C:\>cd "Program Files\Microsoft SDKs\Windows\v7.1\" C:\Program Files\Microsoft SDKs\Windows\v7.1>set DISTUTILS_USE_SDK=1 C:\Program Files\Microsoft SDKs\Windows\v7.1>setenv /x64 /release Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1\. Targeting Windows 7 x64 Release C:\Program Files\Microsoft SDKs\Windows\v7.1>e: E:\>cd cython E:\cython>python setup.py build_ext --inplace running build_ext skipping 'fib.c' Cython extension (up-to-date) building 'fib' extension error: Unable to find vcvarsall.bat 

有关如何解决这个问题的任何build议?

以下是我的一个批处理文件的摘录:

 rem Configure the environment for 64-bit builds. rem Use "vcvars32.bat" for a 32-bit build. "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" rem Convince setup.py to use the SDK tools. set MSSdk=1 set DISTUTILS_USE_SDK=1 

7.1 SDK使用的是VS2010的有效功能,但Python 2.6是使用VS2008编译的。 如果您可以使用7.0 SDK(我认为它也被称为.NET 3.5 SDK),您将有权访问VS2008的编译器。 混合不同的编译器和运行库是有风险的。

http://wiki.cython.org/64BitCythonExtensionsOnWindows上的文档说:

对于Python 2.6,2.7和3.1,您应该使用适用于Windows 7和.NET Framework 3.5 SP1的Microsoft Windows SDK。 晚期或早期版本的SDK将链接到错误的C运行时。 请注意,更高版本的Python可能需要更新版本的Windows SDK。 这是确保扩展与Python相同的C运行时版本链接所必需的。 使用正确版本的SDK是使用微软的构建工具来控制这一点的唯一方法。

微软现在有专门针对Python 2.7的编译器软件包。

我建议你使用,而不是SDK和VS. VS express版没有64位编译器,这就是为什么你需要SDK,理论上。 我尝试安装SDK,但没有帮助。 如果您不需要SDK或VS,请将其卸载并使用http://www.microsoft.com/en-gb/download/details.aspx?id=44266上的编译器。

如果您在安装编译器后仍然遇到问题,我对pyusb 2.7 windows安装错误的回答可能会有所帮助。