从cython pyximport编译中获取警告(distutils构建输出?)

时间:2013-05-23 08:57:08

标签: python cython distutils

当我从IdleX编译一个cython .pyx文件时,弹出的构建shell窗口会出现一堆警告,在不到一秒的时间内再次关闭。

我认为pyximport使用distutils来构建。如何将gcc警告写入文件或输出延迟或等待按键?

3 个答案:

答案 0 :(得分:3)

您可以添加.pyxbld文件来指定Cython构建设置。

假设您正在尝试编译 yourmodule.pyx ,只需在名为 yourmodule.pyxbld 的同一目录中创建一个文件,其中包含:

def make_ext(modname, pyxfilename):
    from distutils.extension import Extension
    ext = Extension(name = modname,
        sources=[pyxfilename])

    return ext

def make_setup_args():
    return dict(script_args=['--verbose'])

--verbose标志使pyximport打印gcc的输出。

请注意,您可以轻松添加额外的编译器和链接器标志。例如,要使用Cython的prange()函数,您必须编译和链接OpenMP库,这是使用Extension类的关键字指定的:

ext = Extension(name = modname,
    sources=[pyxfilename],
    extra_compile_args=['-fopenmp'],
    extra_link_args=['-fopenmp'])

答案 1 :(得分:1)

我自己没有对cython做过任何事情,但我想你可以使用命令行进行建设。这样你就会看到所有的消息,直到你关闭实际的命令行,除非发生一些真正致命的错误。

答案 2 :(得分:1)

是的,以下是如何在文件中获取输出(如果警告溢出命令提示符):

这适用于Windows,但您可以轻松适应* unices:

SET PYTHONPATH=%PYTHONPATH%;../../../DEPENDENCIES/Cython-0.18
SET PATH=%PATH%;../../../DEPENDENCIES/Cython-0.18/bin

python setup.py build_ext --inplace > output.log