我一直在使用cx_Freeze一段时间了,我有一件事我真的想做:将所有文件放入一个我可以分发的可执行文件中。发送一个包含30个文件的文件夹并不是真的用户友好,所有文件都在同一个目录中。我怎么能做到这一点? 感谢。
答案 0 :(得分:11)
cx_freeze不支持。在邮件列表上有关于它的讨论。我记得,作者说其他人(PyInstaller,Py2Exe)使用一些肮脏的黑客来达到这个目的。一些反病毒程序也可以将这种行为视为病毒。
我使用PyInstaller已经有一段时间了,但是由于Python 2.7的支持,我回到了cx_freeze。我使用Inno Setup打包所有内容,因此很容易分发。取决于您是否使用Windows。
答案 1 :(得分:6)
这不是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/
答案 2 :(得分:2)
您可以使用“ bdist_msi”代替“ build”。这样会在目录中使用单个设置应用程序创建一个dist文件夹。
答案 3 :(得分:0)
cx_Freeze不支持构建单个文件exe,因为您的应用程序的所有库都嵌入一个可执行文件中。
文档提供了一些获取单个文件的选项。
Windows下的另一个选择是使用bdist_msi
命令为您的应用程序创建单个Microsoft Installer文件(.msi
),如@QuaziRabbi所述。此命令有here个很少cx_Freeze
特定的选项,用于自定义安装程序。该命令使distutils
软件包的bdist_msi
命令超载,该软件包本身带来了更多用于自定义安装程序的选项。可用选项未记录,需要查看distutils
包的源代码。有趣的示例是Use cx-freeze to create an msi that adds a shortcut to the desktop和cx_freeze bdist_msi: create registry entries?
另一种选择是在cx_Freeze
构建步骤之后,使用另一种工具为冻结的应用程序创建更具可定制性的单文件安装程序。基于脚本的工具NSIS (Nullsoft Scriptable Install System)允许创建一个非常可定制的安装程序,脚本的使用意味着该步骤可以完全自动化。 @Fenisko的答案提到了另一个工具,还有更多工具。