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