簡體   English   中英

如何使用cython編譯擴展?

[英]How can I compile an extension using cython?

我正在嘗試在安裝了python 2.6 64位版本的Windows 7 64位計算機上,從此處的示例頁面編譯一個簡單的cython擴展。 我從Gohlke的頁面安裝了適用於Windows 64位版本的Cython 0.15.1

基本上, 這里這里的答案都不是我的選擇,因為我確實確實需要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

關於如何解決這個問題有什么建議嗎?

這是我的批處理文件之一的節選:

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是通過Microsoft的構建工具進行控制的唯一方法。

Microsoft現在擁有專門用於Python 2.7的ac編譯器軟件包。

我建議您使用它而不是SDK和VS。 VS Express版沒有64位編譯器,因此從理論上講,您需要SDK。 我嘗試安裝SDK,但沒有幫助。 如果不需要其他任何SDK或VS,請卸載它們並使用http://www.microsoft.com/zh-CN/g/download/details.aspx?id=44266中的編譯器。

如果您在安裝編譯器后仍然遇到問題,我對pyusb 2.7 Windows安裝錯誤的回答可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM