如何在Windows 8.1中的anaconda(python3.6)中为pyd构建cython pyx?

时间:2017-12-22 16:05:47

标签: python-3.x sockets struct cython cythonize

我已经提到了一些网站在Windows 8.1中将pyx构建到pyd。我正在使用带有Spyder IDE的Anaconda Distribution,我开发了pyx文件并且无法构建“Anaconda命令提示符” 阿纳康达>

python setup.py build --inplace --compiler=mingw32 

并尝试了

python setup.py build_ext --inplace --compiler=mingw32

收到以下错误:

File "C:\ProgramData\Anaconda3\lib\distutils\cygwinccompiler.py", line 129 in __init__  
  if self.ld_version >= "2.10.90":
TypeError: '>=' not supported between instances of 'NoneType' and 'str'

我的简单pyx代码是

cdef int fib(int n):    
    cdef int a, b, i
    a, b  = 1, 1
    for i in range(n):
       a, b = a+b, a
    return a

和我的setup.py文件如下..

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize('fb.pyx'))

如何在Windows 8.1中摆脱这种情况?我想在我的套接字编程中使用Struct和Socket库。

1 个答案:

答案 0 :(得分:3)

您的.pyx或setup.py代码AFAICT没有任何问题。 我在Windows 10上使用Anaconda3,它可以工作。

问题在于编译器。你自己安装了mingw32吗? 看起来你所拥有的任何版本都无法编译代码。 我对cygwin有同样的错误

但是,使用Visual Studio 14和borlands编译器中包含的编译器编译好的代码。

尝试--compiler = bcpp(希望已经在您的系统上)

尝试安装:http://landinghub.visualstudio.com/visual-cpp-build-tools 并使用--compiler = msvc运行您的编译命令(或者只是不指定编译器。)