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

Posted

技术标签:

【中文标题】如何在 Windows 8.1 中的 anaconda(python3.6) 中将 cython pyx 构建为 pyd?【英文标题】:How to build cython pyx to pyd in anaconda(python3.6) in windows 8.1? 【发布时间】:2018-06-05 06:32:38 【问题描述】:

我已经推荐了一些网站在 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】:

您的 .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 运行您的编译命令(或不指定编译器。)

【讨论】:

以上是关于如何在 Windows 8.1 中的 anaconda(python3.6) 中将 cython pyx 构建为 pyd?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何将 C# 中的 Image 对象制作到 Windows Phone 8.1

如何在 C++ 运行时组件中的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll

如何在Windows 8/8.1系统中设置VPN

如何以编程方式检测Windows Phone 8.1操作系统版本?

如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?