【问题标题】:making one pyd for a set of files with cython [duplicate]使用 cython 为一组文件制作一个 pyd [重复]
【发布时间】:2013-11-07 22:40:31
【问题描述】:

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

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

我可以配置 cython 进行编译然后将它们全部打包到一个 packageA.pyd 中吗?

【问题讨论】:

    标签: cython


    【解决方案1】:

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

    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 的模块,我不知道这对你来说是否可以接受,或者你的包中是否真的需要不同的模块。 但可能还有其他更适合您的问题的方法...

    【讨论】:

    • 无需全部转为 .pyx,只需将它们包含在 .py 扩展名中即可。
    • @wtayyeb 是的,你是对的。我后来看到了。在阅读了关于 Cython 的下一个问题之后。很高兴知道。谢谢。
    • 有什么方法可以在 mod1.py 中对模块 mod2.py 进行相对导入吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多