使用cx\u Freeze编译pythonc扩展
我正在尝试从带有C扩展模块的Python3包在Windows上创建一个exe。在distutils中,可以创建如下扩展:使用cx\u Freeze编译pythonc扩展,python,windows,distutils,cx-freeze,Python,Windows,Distutils,Cx Freeze,我正在尝试从带有C扩展模块的Python3包在Windows上创建一个exe。在distutils中,可以创建如下扩展: 来自distutils.core导入设置,扩展 module1=扩展('demo', sources=['demo.c']) 安装程序(名称='PackageName', 版本='1.0', description='这是一个演示包', ext_模块=[module1]) 然后,将使用适当的编译器编译扩展,并使用以下命令将其放置在其他模块旁边: python setup.p
来自distutils.core导入设置,扩展
module1=扩展('demo',
sources=['demo.c'])
安装程序(名称='PackageName',
版本='1.0',
description='这是一个演示包',
ext_模块=[module1])
然后,将使用适当的编译器编译扩展,并使用以下命令将其放置在其他模块旁边:
python setup.py build_ext --inplace
cx_Freeze是一个模块,它可以将您的代码打包到一个exe文件以及Python解释器和相关包中。然后,最终用户可以使用您的程序,而无需安装Python。不幸的是,cx\U Freeze没有扩展类,我找不到一种方法来处理cx\U Freeze的编译
我不确定的一个解决方案是,首先使用distutils/setuptools就地构建扩展,然后使用cx\u Freeze创建可执行文件。不过,我不想重新发明轮子,所以我想知道在这方面有更多经验的其他人是否有解决方案。我找到了一个可行的解决方案。我可以从distutils导入扩展,并从cx\U Freeze将其传递到安装程序:
from cx_Freeze import setup
from distutils.core import Extension
...
setup=(...
ext_modules=Extension(...))
这是有道理的,因为cx\u Freeze构建在distutils之上。最初,我试图使用setuptools.setup
,但这不起作用