我已经使用cx_Freeze有一段时间了,有一件事情我一直很想做:将所有文件放入一个可执行文件中以便分发。将包含30个文件的文件夹发送给用户并不是非常方便。我该如何实现这个目标? 谢谢。
cx_freeze不支持此功能,曾在邮件列表上讨论过。我记得作者说其他一些工具(如PyInstaller、Py2Exe)使用了一些脏技巧来实现它。此外,一些反病毒程序也可能将其认为是病毒行为。
我曾使用PyInstaller一段时间,但因为需要支持Python 2.7而回到了cx_freeze。我使用 Inno Setup 打包所有内容,这样分发就很容易了。这取决于您是否使用Windows。
这难道不是 bbfreeze
的功能吗?
这里有一个教程: http://www.blog.pythonlibrary.org/2010/08/19/a-bbfreeze-tutorial-build-a-binary-series/
实际上,使用 Python 的 zipimport 自行创建并不难。详情请见:http://docs.python.org/library/zipimport.html
您可能更喜欢使用像 UPX 这样的通用解决方案,而非仅限于 Python。http://upx.sourceforge.net/
bbfreeze
不支持 Python3。 - dotancohencx_Freeze不支持构建单个文件exe,其中您的应用程序的所有库都嵌入在一个可执行文件中。
文档提供了一些选项来获取单个文件。
在Windows下的进一步选项是使用bdist_msi
命令为您的应用程序创建单个Microsoft Installer文件(.msi
),如@QuaziRabbi所提到的。这个命令有一些cx_Freeze
-特定的选项在这里记录,可以自定义安装程序。这个命令重载了distutils
包的bdist_msi
命令,它本身带来了更多的选项来自定义安装程序。可用的选项没有文档记录,需要查看distutils
包的源代码。有趣的例子是使用cx-freeze创建一个向桌面添加快捷方式的msi和cx_freeze bdist_msi:创建注册表项?。cx_Freeze
构建步骤之后使用另一个工具来创建更可定制的单文件安装程序。基于脚本的工具 NSIS (Nullsoft Scriptable Install System) 允许创建非常可定制的安装程序,而使用脚本意味着这一步骤可以完全自动化。@Fenisko 的回答提到了另一个工具,还有很多其他工具可供选择。