4

我试图让 cython 意识到我在 MinGW 32 位中有 ac 编译器,并且我已经尝试了我在网上可以找到的所有内容,但它仍然无法正常工作。我正在运行 Windows 7 Professional 64 位。这是我尝试过的:

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

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

C:\MinGW\bin;C:\MinGW\MSYS\1.0\local\bin;C:\MinGW\MSYS\1.0\bin

(3) 我通过创建一个名为的文件告诉 Python 使用 MinGW 作为默认编译器

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

[build]
compiler = mingw32

(顺便说一下,我确实有 MinGW32)

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

(5) 我有一个名为 setup.py 的文件和一个用 python 编写的名为trycython.pyx 的模块。我的 setup.py 说 from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext

setup(
    cmdclass = {'build_ext':build_ext},
    ext_modules=[Extension("tryingcython",["tryingcython.pyx"])]
)

然后我打开命令提示符并进入包含 setup.py 和 trycython.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 并且它找不到它或什么,即使我已经尝试了我可以在网上找到的每一条建议,以使其意识到我有包含 gcc 的 MinGW . 任何关于如何让 cython 实际工作的帮助/其他想法将不胜感激。

4

1 回答 1

0

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

尝试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工作!

于 2013-08-08T11:00:11.480 回答