Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cx\u Freeze编译pythonc扩展_Python_Windows_Distutils_Cx Freeze - Fatal编程技术网

使用cx\u Freeze编译pythonc扩展

使用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

我正在尝试从带有C扩展模块的Python3包在Windows上创建一个exe。在distutils中,可以创建如下扩展:

来自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
,但这不起作用