cx_Freeze Python单文件?

30

我已经使用cx_Freeze有一段时间了,有一件事情我一直很想做:将所有文件放入一个可执行文件中以便分发。将包含30个文件的文件夹发送给用户并不是非常方便。我该如何实现这个目标? 谢谢。


8
PyInstaller可以实现这一点。我也想知道如何使用cx_freeze来完成这个。 - Wang Dingwei
2
我以前从未听说过PyInstaller,它看起来很棒!感谢您的建议。 - pajm
4个回答

17

cx_freeze不支持此功能,曾在邮件列表上讨论过。我记得作者说其他一些工具(如PyInstaller、Py2Exe)使用了一些脏技巧来实现它。此外,一些反病毒程序也可能将其认为是病毒行为。

我曾使用PyInstaller一段时间,但因为需要支持Python 2.7而回到了cx_freeze。我使用 Inno Setup 打包所有内容,这样分发就很容易了。这取决于您是否使用Windows。


8

7
你能不能在这个回答中再多花点心思呢?没有如何操作的总结,甚至没有指向 http://pypi.python.org/pypi/bbfreeze 的链接。 - endolith
9
很遗憾,bbfreeze 不支持 Python3。 - dotancohen
2
请注意,自2014年起,bbfreeze已不再维护。https://github.com/schmir/bbfreeze - Taylor D. Edmiston

3

3
这将创建一个安装程序,但不是一个单独的可执行文件。 - SimTae

2
根据文档

cx_Freeze不支持构建单个文件exe,其中您的应用程序的所有库都嵌入在一个可执行文件中。

文档提供了一些选项来获取单个文件。

在Windows下的进一步选项是使用bdist_msi命令为您的应用程序创建单个Microsoft Installer文件(.msi),如@QuaziRabbi所提到的。这个命令有一些cx_Freeze-特定的选项在这里记录,可以自定义安装程序。这个命令重载了distutils包的bdist_msi命令,它本身带来了更多的选项来自定义安装程序。可用的选项没有文档记录,需要查看distutils包的源代码。有趣的例子是使用cx-freeze创建一个向桌面添加快捷方式的msicx_freeze bdist_msi:创建注册表项?
另一个选择是在 cx_Freeze 构建步骤之后使用另一个工具来创建更可定制的单文件安装程序。基于脚本的工具 NSIS (Nullsoft Scriptable Install System) 允许创建非常可定制的安装程序,而使用脚本意味着这一步骤可以完全自动化。@Fenisko 的回答提到了另一个工具,还有很多其他工具可供选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接