如何在cython中编译多个文件

时间:2015-03-18 00:38:06

标签: python cython setuptools distutils

Cython的新手。我在名为setup.py的文件中使用以下代码段将另一个文件编译为Cython(SO用户通过here向我建议):

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension('func1', ['util/func1_pc.py'],)]

setup(
    name="Set 1 of Functions",
    cmdclass={'build_ext': build_ext},
    ext_modules=ext_modules
)

我将其编译为python setup.py build_ext --inplace。这会将我util/func1_pc.py的文件编译到func1.pyd目录中的setup.py

假设我现在有两个文件:util/funct1_pc.pyutil/funct2_pc.py。是否有人可以建议如何修改上述代码段以生成func1.pydfunc2.pyd

感谢。

2 个答案:

答案 0 :(得分:3)

Extension constructor允许您指定多个源文件,因此将ext_modules行更改为:

ext_modules = [Extension('func1', ['util/func1_pc.py', 'util/funct2_pc.py'],)]

应该这样做。

答案 1 :(得分:1)

run_cython.pyx - 与 setup.py 目录相同级别的文件

compilled.pyx - 来自目录的文件,与 setup.py 的目录位于同一级别

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize(
    'run_cython.pyx',
    './app/compilled.pyx'
)
)