使用特定编译器args

时间:2016-05-29 15:10:22

标签: python cython

当运行以下代码时:

git clone https://github.com/cython/cython.git
sudo python setup.py install
使用默认编译参数编译

cython(Cython==0.24)。 Apparently,过去可以添加:

extra_compile_args=["-O3"]

setup.py文件并控制它。但我只是试了一下(把这条线放在下面:

import platform
is_cpython = platform.python_implementation() == 'CPython'

)当我做的时候

sudo python setup.py install

所有文件仍然使用可怕的-O2标志进行编译。如何解决这个问题?

(我正在使用linux)

1 个答案:

答案 0 :(得分:1)

我很确定在运行export CFLAGS="-O3"之前从终端使用setup.py(正如我在评论中提到的)通常可以解决问题,但是,我刚刚意识到你要做的事情。

在为需要编译的文件创建Extention对象时,需要提供extra_compile_args作为参数。 extra_compile_args是一个列表,其中包含您要提供的每个参数的字符串。

setup.py lib的Cython脚本中,that is performed in lines 163-166如果我没有记错的话。

简而言之,如果您将这些行更改为:

    extensions.append(Extension(
        module, sources=[pyx_source_file],
        extra_compile_args=["-O3"],   # add the needed argument
        define_macros=defines_for_module,
        depends=dep_files))

它将确保编译的每个.pyx文件都指定了-O3参数。