在使用distutils构建时,如何覆盖Cython的默认编译标志?

时间:2011-11-23 02:29:14

标签: distutils cython

我正在编译Linux中的一些cython扩展,并注意到从distutils机制构建时默认使用-O2。我想知道是否有一种简单的方法可以将其更改为-O3。

我尝试在Extension对象上使用extra_compile_args,但这会导致-O2和-O3作为参数传递给gcc。我有点想玩其他深奥的gcc选项,因此希望我能控制编译步骤。一个显而易见的问题是“为什么我不运行cython my.pyx并手动编译结果?”。我很乐意,是我的答案......但是从命令行运行时,/ usr / local / bin /中的cython可执行文件会抛出一个DistributionNotFound:Cython == 0.12.1错误。我还没想出那一个。

无论如何,我不确定它是一个cython的东西,一个distutils的东西或一个破坏的apt包装的东西。我只是从ubuntu 11.10 apt repo中抓取了cython(目前正在使用ubuntu 11.10)。

2 个答案:

答案 0 :(得分:11)

在setup.py中使用extra_compile_args = [“ - O3”],“-O3”应该在-O2选项覆盖之后出现。检查共享对象(.so或.dll)大小,以便快速确认。

的Davide

答案 1 :(得分:2)

larsmans评论是对的 - 使用/ usr / bin / cython解决了我的问题。