繁体   English   中英

使用cx_Freeze编译Python C扩展

[英]Compile Python C Extensions with cx_Freeze

我正在尝试使用具有C扩展模块的Python 3软件包在Windows上创建一个exe。 在distutils中,您可以创建如下扩展名:

from distutils.core import setup, Extension

module1 = Extension('demo',
                     sources = ['demo.c'])

setup (name = 'PackageName',
       version = '1.0',
       description = 'This is a demo package',
       ext_modules = [module1])

然后,将使用相应的编译器编译该扩展,并使用以下命令将其放置在其他模块的旁边:

python setup.py build_ext --inplace

cx_Freeze是一个模块,可以将您的代码与Python解释器和相关软件包一起打包到exe文件中。 然后,最终用户无需安装Python就可以使用您的程序。 不幸的是,cx_Freeze没有扩展类,我找不到用cx_Freeze处理编译的方法。

我不确定的一个解决方案是先使用distutils / setuptools构建适当的扩展,然后使用cx_Freeze创建可执行文件。 不过,我不想重新发明轮子,所以我想知道在这个领域有更多经验的其他人是否有解决方案。

我找到了可行的解决方案。 我可以从distutils导入Extension,然后从cx_Freeze将其传递到安装程序中:

from cx_Freeze import setup
from distutils.core import Extension
...
setup=(...
       ext_modules=Extension(...))

这是有道理的,因为cx_Freeze建立在distutils之上。 最初,我试图使用setuptools.setup ,但这不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM