3

我在一个包中有多个 .py 文件

packageA
    \__init__.py
    \mod1.py
    \mod2.py
    \mod3.py

我可以将 cython 配置为编译然后将它们打包在一起packageA.pyd吗?

4

1 回答 1

3

就个人而言,我最好将所有.py文件转换为.pyx,然后将它们包含到.pyxCython 扩展的主体中:

packageA.pyx

include "mod1.pyx" 
include "mod2.pyx" 
include "mod3.pyx" 

然后,使用如下所示进行编译setup.py

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

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = [
        Extension("packageA", sources=["packageA.pyx"])
    ]
)                       

运行它会生成一个多合一的packageA.pyd二进制文件。当然,这会输出一个名为 的模块packageA,我不知道这对你来说是否可以接受,或者你的包中是否真的需要不同的模块。但是可能还有其他更适合您的问题的方法...

于 2013-10-31T05:14:09.327 回答