Python 即使在编辑路径、在distutils中生成文件、删除-mno-cygwin的所有实例之后,也无法让Cython找到MinGW gcc编译器

Python 即使在编辑路径、在distutils中生成文件、删除-mno-cygwin的所有实例之后,也无法让Cython找到MinGW gcc编译器,python,windows,gcc,mingw,cython,Python,Windows,Gcc,Mingw,Cython,我试图让cython意识到我有一个32位的MinGW c编译器,我已经尝试了在web上找到的所有东西,但仍然不起作用。我正在运行64位Windows 7 Professional。以下是我尝试过的: (1) 我有Python2.7,我刚刚安装了带有选项gcc和g++以及一些其他选项的MinGW (2) 我编辑了PATH环境变量,使其包括 C:\MinGW\bin;C:\MinGW\MSYS\1.0\local\bin;C:\MinGW\MSYS\1.0\bin (3) 我告诉Python通过创

我试图让cython意识到我有一个32位的MinGW c编译器,我已经尝试了在web上找到的所有东西,但仍然不起作用。我正在运行64位Windows 7 Professional。以下是我尝试过的:

(1) 我有Python2.7,我刚刚安装了带有选项gcc和g++以及一些其他选项的MinGW

(2) 我编辑了PATH环境变量,使其包括

C:\MinGW\bin;C:\MinGW\MSYS\1.0\local\bin;C:\MinGW\MSYS\1.0\bin
(3) 我告诉Python通过创建一个名为

C:\Python27\Lib\distutils\distutils.cfg,包含

[build]
compiler = mingw32
(顺便说一句,我有MinGW32)

(4) 我从文件C:\Python27\Lib\distutils\cygwincompiler.py中删除了-mno cygwin的所有实例

(5) 我有一个名为setup.py的文件和一个用python编写的名为tryingcython.pyx的模块。我的setup.py说 从distutils.core导入设置 从distutils.extension导入扩展 从Cython.Distutils导入生成\u ext

setup(
    cmdclass = {'build_ext':build_ext},
    ext_modules=[Extension("tryingcython",["tryingcython.pyx"])]
)
然后我打开命令提示符,进入包含setup.py和tryingcython.pyx的目录,然后键入 python setup.py build_ext--inplace--compiler=mingw32

然后它告诉我:

running build_ext
skipping 'tryingcython.c' Cython extension (up-to-date)
building 'tryingcython.c' extension
gcc -mdll -O -Wall -IC:\Python27\include -IC:\Python27\PC -c tryingcython.c -o build\
temp.win32-2.7\Release\tryingcython.o
error: command 'gcc' failed: No such file or directory
所以我猜Cython说不出我有gcc,它找不到它或者什么,尽管我已经尝试了我在网上找到的每一条建议,让它意识到我有MinGW,它包括gcc。
非常感谢您对我如何让cython真正工作的任何帮助/其他想法。

您使用的操作系统和版本与我完全相同

尝试使用以下方法校准gcc:

SET input=intput.c
SET output=output.pyd
gcc -shared  -IC:\Python27\include -LC:\Python27\libs -O2 -o %output% %input% -lpython27
通常我将此调用放在
cythongcc.bat
文件中,该文件位于
PATH
环境变量识别的目录中:

gcc -shared  -IC:\Python27\include -LC:\Python27\libs -O3 -mtune=native -o %1.pyd %2.c -lpython27
因此,我可以从cython
.pyx
文件所在的位置执行以下操作:

cython input.pyx
cythongcc input input

使编译的
.pyd
工作

是否重新启动了命令提示符的会话?环境变量不会自动更新。正如@IanH所说,gcc.exe看起来确实不在您的路径中。可以在命令提示符中直接调用它吗?(比如
C:\>gcc.exe
)?一般来说,我会使用像Anaconda这样的发行版,它附带了编译Cython模块所需的所有工具。