如何在setup.py中正确配置编译器相关选项?
如何在setup.py中正确配置编译器相关选项?
嘿,我来帮你搞定这个问题~你现在碰到的警告,是因为找错了参数的放置位置——compiler_directives和extra_compile_args根本不是setup()函数的顶层参数,直接传进去Python自然会提示“不认识”它们。
给你调整好的正确写法:
from setuptools import setup, Extension from Cython.Build import cythonize # 先创建扩展模块对象,把编译优化参数配置在这里 ext_modules = [ Extension( "test", # 最终生成的扩展模块名称(import时用这个名字) sources=["test.pyx"], extra_compile_args=['-Ofast', '-march=native'] ) ] setup( # 把Cython的编译规则参数传给cythonize,而非setup ext_modules=cythonize( ext_modules, compiler_directives={'language_level': "3"} ) )
简单说下背后的逻辑:
compiler_directives是Cython用来处理代码编译规则的配置,得直接传给负责把.pyx转成C代码的cythonize()函数;extra_compile_args是给C编译器的额外优化参数,需要和具体的扩展模块绑定,所以要放在Extension对象里,setup会把这些参数传递给底层的编译工具链。
这样修改后,那些烦人的警告就会消失,你的编译配置也能正常生效啦~
备注:内容来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

