使用特定的编译器参数编译 Cython
compile Cython with specific compiler args
当运行以下代码时:
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)
我很确定在 运行 setup.py
之前从终端使用 export CFLAGS="-O3"
(正如我在评论中提到的那样)通常可以解决问题,但是,我刚刚意识到你正在尝试做。
在为需要编译的文件创建 Extention
对象时,您需要提供 extra_compile_args
作为参数。
extra_compile_args
是一个列表,其中包含您要提供的每个参数的字符串。
在 Cython
库的 setup.py
脚本中,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
参数。
当运行以下代码时:
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)
我很确定在 运行 setup.py
之前从终端使用 export CFLAGS="-O3"
(正如我在评论中提到的那样)通常可以解决问题,但是,我刚刚意识到你正在尝试做。
在为需要编译的文件创建 Extention
对象时,您需要提供 extra_compile_args
作为参数。
extra_compile_args
是一个列表,其中包含您要提供的每个参数的字符串。
在 Cython
库的 setup.py
脚本中,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
参数。