如何使用cython编译扩展?

Leg*_*end 3 python windows 64-bit compiler-errors cython

我想从编译示例页面简单的用Cython扩展这里我的Windows 7 64位计算机上使用Python 2.6安装64位版本.我从Gohlke的页面安装了Cython 0.15.1 for Windows 64位版本.

基本上,这里这里的答案不是我的选择,因为我确实需要Python 64位版本来解决更大的内存.另外,因为我试图使用Microsoft SDK for .NET 4进行编译,所以我不能在后一种解决方案中使用该方法.

我尝试了这里的步骤并观察了绿色窗口,但编译现在抛出了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
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何建议?

cas*_*evh 5

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

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 
Run Code Online (Sandbox Code Playgroud)

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


Tho*_*s K 5

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是使用Microsoft的构建工具控制此问题的唯一方法.