如何从头开始搭建 windows cython 环境?

How to set up a windows cython environment from scratch?

我已经在 Internet 上搜索了几个小时以了解如何使 cython 工作但没有成功。

我在 windows,我使用 python3 和 Anaconda,我也有使用 mingw GCC 编译器的代码块。

我希望能够使用 cython 运行 即使是最基本的代码(如 'helloworld'),因为直到现在我只遇到了我不理解的错误。它们可能来自不稳定的开发环境,所以这就是我问这个问题的原因。

主要错误发生在将 .pyx 代码转换为 .c 时,即使我实现了这一点,但生成的 .c 上还有更多错误。


这是我的 'helloworld.pyx' :

print('Hello Wolrd')

这是我的 setup.py :

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize('helloworld.pyx'))

当我 运行 python3 setup.py 我得到 ModuleNotFoundError: No module named 'Cython'

当我 运行 cython helloworld.pyx 时,我得到一个文件 helloworld.c 但是当我 运行 它在代码块中时,我得到错误 Python.h : no such file or directory

所以我通过在 include 命令中放置绝对路径来临时修复它,但我仍然遇到错误。


我也试过使用 python setup.py build_ext --inplace 但我得到

running build_ext
building 'helloworld' extension
C:\MinGW\bin\gcc.exe -mdll -O -Wall -DMS_WIN64 -IC:\Users\Julien\anaconda3\include -IC:\Users\Julien\anaconda3\include -c helloworld.c -o build\temp.win-amd64-3.7\Release\helloworld.o
In file included from C:\Users\Julien\anaconda3\include/Python.h:87:0,
                 from helloworld.c:4:
C:\Users\Julien\anaconda3\include/pytime.h:123:59: warning: 'struct timeval' declared inside parameter list
C:\Users\Julien\anaconda3\include/pytime.h:123:59: warning: its scope is only this definition or declaration, which is probably not what you want
C:\Users\Julien\anaconda3\include/pytime.h:131:5: warning: 'struct timeval' declared inside parameter list
C:\Users\Julien\anaconda3\include/pytime.h:136:5: warning: 'struct timeval' declared inside parameter list
helloworld.c:201:41: warning: division by zero
helloworld.c:201:12: error: enumerator value for '__pyx_check_sizeof_voidp' is not an integer constant
error: command 'C:\MinGW\bin\gcc.exe' failed with exit status 1

我按照教程安装了 mingw(它适用于在代码块中用 C 编码,所以我应该正确安装它)并且我验证了 Cython 已正确安装在 Python 库中。我做错了什么??

好的,所以问题实际上是在编译器中。

问题是因为我的 mingw 编译器不正确:我建议如下 these instructions which you will find at https://wiki.python.org/moin/WindowsCompilers.

/!\ 不要忘记在您的 python 环境中安装 setuptools(使用给定的命令对我有效)

这至少应该允许你为 cython

制作 basic tutorial