小编Lab*_*llo的帖子

使用 Cython 和 setuptools 编译多个扩展时设置默认编译器

我目前有一个项目,我们大量使用 Cython 来加速我们所有的子模块/类,我希望用clang而不是gcc在 Linux 系统上编译它们。为此,我目前有一个函数可以通过以下方式收集所有扩展:

def extensions():
    try:
        from Cython.Build import cythonize
    except ImportError:
        def cythonize(*args, **kwargs):
            print("Hint: Wrapping import of cythonize in extensions()")
            from Cython.Build import cythonize
            return cythonize(*args, **kwargs)

    try:
        import numpy
        lstIncludes = [numpy.get_include()]
    except ImportError:
        lstIncludes = []

    extensionArguments = {
        'include_dirs':
        lstIncludes + ['package/core', 'package/inspect', 'util'],
        'extra_compile_args': compilerArguments,
        'extra_link_args': linkerArguments,
        'define_macros': defineMacros
    }

    return cythonize(
        [Extension("*", ["package/*.pyx"], **extensionArguments),
         Extension("*", ["package/algs/*.pyx"], **extensionArguments),
         Extension("*", ["package/core/*.pyx"], **extensionArguments)],
        compiler_directives=cythonDirectives)
Run Code Online (Sandbox Code Playgroud)

此外,我设置

os.environ["CC"] = "clang"
os.environ["CXX"] = …
Run Code Online (Sandbox Code Playgroud)

python compilation setuptools cython

7
推荐指数
1
解决办法
1429
查看次数

标签 统计

compilation ×1

cython ×1

python ×1

setuptools ×1