我已经使用 cx_Freeze 一段时间了,我真正想做的一件事是:将所有文件放入一个我可以分发的可执行文件中。发送一个包含 30 个文件的文件夹,所有文件都在同一个目录中,这对用户并不友好。我怎样才能做到这一点?谢谢。
4 回答
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/
您可以使用“bdist_msi”而不是“build”。这将使用单个安装应用程序在目录中创建一个 dist 文件夹。
根据文档
cx_Freeze 不支持构建单个文件 exe,其中应用程序的所有库都嵌入在一个可执行文件中。
该文档提供了一些获取单个文件的选项。
如@QuaziRabbi 所述,Windows 下的另一个选项是使用该bdist_msi
命令为您的应用程序创建单个 Microsoft 安装程序文件 ( )。.msi
此命令在此处cx_Freeze
记录了一些特定的选项来自定义安装程序。此命令重载了包的命令,该命令本身带来了更多选项来自定义安装程序。可用的选项没有记录,需要查看包的源代码。有趣的例子是使用 cx-freeze 创建一个向桌面添加快捷方式的 msi和cx_freeze bdist_msi:创建注册表项?bdist_msi
distutils
distutils
cx_Freeze
另一种选择是在构建步骤之后使用另一个工具为冻结的应用程序创建一个更可定制的单文件安装程序。基于脚本的工具NSIS(Nullsoft Scriptable Install System)允许人们创建一个非常可定制的安装程序,并且使用脚本意味着这个步骤可以完全自动化。@Fenisko 的答案提到了另一个工具,还有更多。