как скомпилировать несколько файлов в cython

Новичок в Cython. Я использую следующий фрагмент кода в файле с именем setup.py для компиляции другого файла в Cython (это было предложено мне пользователем SO через здесь):

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.py и util/funct2_pc.py. Может ли кто-нибудь предложить, как изменить приведенный выше фрагмент кода, чтобы сгенерировать из них func1.pyd и func2.pyd?

Спасибо.


person uday    schedule 18.03.2015    source источник


Ответы (2)


конструктор расширения позволяет указать несколько исходных файлов, поэтому меняем строку ext_modules на это:

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

должен сделать трюк.

person Liam Marshall    schedule 19.03.2015
comment
не работает multiple definition of 'PyInit_func1' - person eri; 30.01.2021

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'
)
)
person Alex Pashkov    schedule 02.04.2021