[英]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.