【问题标题】:how to compile multiple files in cython如何在cython中编译多个文件
【发布时间】:2015-05-20 15:45:35
【问题描述】:

Cython 的新手。我在一个名为setup.py 的文件中使用以下代码sn-p 将另一个文件编译为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 的文件编译成setup.py 目录下的func1.pyd

假设我现在有两个文件:util/funct1_pc.pyutil/funct2_pc.py。有人可以建议如何修改上面的代码 sn-p 以从中生成func1.pydfunc2.pyd 吗?

谢谢。

【问题讨论】:

    标签: python cython setuptools distutils


    【解决方案1】:

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

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

    应该可以解决问题。

    【讨论】:

    • 无效multiple definition of 'PyInit_func1'
    【解决方案2】:

    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'
    )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2016-10-27
      • 2011-12-12
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2017-02-08
      • 2020-11-20
      相关资源
      最近更新 更多