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

Vol*_*ire 15 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).

Dav*_*ese 12

使用extra_compile_args =" - O3"]在你的setup.py,将"-O3"应在-02选项overrading后出现.检查共享对象(.so或.dll)大小以便快速确认.

达维德


Vol*_*ire 2

拉斯曼的评论是正确的 - 使用 /usr/bin/cython 解决了我的问题。