几个 .pyx 的 Cython setup.py

Posted

技术标签:

【中文标题】几个 .pyx 的 Cython setup.py【英文标题】:Cython setup.py for several .pyx 【发布时间】:2014-03-16 13:48:27 【问题描述】:

我想更快地进行 cythonize。一个 .pyx 的代码是

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

setup(
    ext_modules = cythonize("MyFile.pyx")
)

如果我想 cythonize 怎么办

几个带有 ext .pyx 的文件,我将用它们的名字来称呼它们

文件夹中的所有 .pyx 文件

在这两种情况下 setup.py 的 python 代码是什么?

【问题讨论】:

【参考方案1】:

发件人:https://github.com/cython/cython/wiki/enhancements-distutils_preprocessing

# several files with ext .pyx, that i will call by their name
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules=[
    Extension("primes",       ["primes.pyx"]),
    Extension("spam",         ["spam.pyx"]),
    ...
]

setup(
  name = 'MyProject',
  cmdclass = 'build_ext': build_ext,
  ext_modules = ext_modules,
)

# all .pyx files in a folder
from distutils.core import setup
from Cython.Build import cythonize

setup(
  name = 'MyProject',
  ext_modules = cythonize(["*.pyx"]),
)

【讨论】:

嘿,如果我想将库和 include_dirs 放入代码中怎么办。 Nad everyname ofr pyx 在同一个。所以我有一个 .so 文件【参考方案2】:

上面的答案对我来说并不完全清楚。要对不同目录中的两个文件进行 cythonize,只需在 cythonize(...) 函数中列出它们即可:

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

setup(
    ext_modules = cythonize(["folder1/file1.pyx", "folder2/file2.pyx"])
)

【讨论】:

以上是关于几个 .pyx 的 Cython setup.py的主要内容,如果未能解决你的问题,请参考以下文章

cython 中的异常处理

如何打包 cython 模块?

关于 .pyx文件的编译和导入

『Python CoolBook』Cython

来自 cython wiki 的 Hello World 不起作用

我可以在 C++ 中使用 cython 编译的动态库吗?