Python GUI应用程序重新分发

时间:2008-09-30 16:50:38

标签: python user-interface wxpython distribution freeze

我需要开发一个中小型桌面GUI应用程序,由于时间限制,最好使用Python作为首选语言。

我有哪些GUI库选择允许我独立地重新分发我的应用程序,假设用户没有可用的Python安装,显然没有我正在使用的GUI库?

另外,我如何为每个目标操作系统打包合理大小的二进制文件? (我的主要目标是Windows和Mac OS X)

增加: 我一直在看WxPython,但是我发现了大量的恐怖故事,用cx_freeze包装它并获得30mb +二进制文件,并没有真正的建议如何实际做包装以及如何信任值得它是。

7 个答案:

答案 0 :(得分:6)

答案 1 :(得分:6)

http://wiki.wxpython.org/CreatingStandaloneExecutables

除非你设法包含wx的调试版本,否则它不应该那么大。 我似乎记得python.dll的4Mb和wx的similair。

答案 2 :(得分:2)

Python有一个名为TKinter的嵌入式GUI工具包,它基于TCL编程语言的Tk库。它是非常基本的,并没有您在Windows窗体或GTK中所期望的所有功能,但是如果您必须拥有独立于平台的工具包,我认为没有其他选择,请记住您也不希望增长那么多二进制文件。

Tkinter并不难用,因为它没有数百万个小部件/控件和选项,并且是大多数python发行版中包含的默认工具包,至少在Windows,OSX和Linux上是这样。

GTKQT更漂亮,更强大,但它们对你来说有一个很大的缺点:它们很重,并且对第三个库很重要,特别是GTK,它有很多依赖性,使它成为一个很难将它分发到你的软件中。

至于二进制创建,我知道有py2exe将python代码转换为win32可执行代码(.exe's),但我不确定是否有类似OSX的东西。您是否担心,因为人们可以看到源代码,或者只是因为您可以将所有内容捆绑在一个包中?如果您只想捆绑创建独立可执行文件所不需要的所有内容,则可以轻松创建安装程序:

Creating distributable in python

这是关于如何在软件完成后分发软件的指南。

答案 3 :(得分:1)

Windows的

http://Gajim.org使用python和PyGtk。你可以检查,他们是如何做到的。另外,还有用于GUI的PyQt(以及前面提到的wxpython)。

答案 4 :(得分:1)

我没有为Windows以外的任何平台构建独立应用程序的经验。

那说:

Tkinter:可以正常使用py2exe。 Python Megawidgets(Tkinter的“扩展库”)工作正常,但它使用动态导入做了很时髦的事情,所以你需要将所有组件组合成一个大文件“pmw.py”并将其添加到你的项目中(好吧,你也会有pmwblt.py和pmwcolor.py)。有关如何在某处执行此操作的说明(在py2exe wiki或PMW文档中)。 Tix(可以与Tkinter一起使用的Tk的扩展)不适用于py2exe,或者至少这是我四年前的经验。

wxPython 也适用于py2exe。我刚刚查看了我的应用程序;整个发行量达到11MB左右。其中大部分是wx DLL和.pyd文件,但我看不出你是如何避免这种情况的。如果您的目标是Windows XP,则需要在setup.py中包含清单,否则它看起来很难看。有关详细信息,请参阅this email

答案 5 :(得分:0)

我自己使用过py2Exe - 它非常简单(至少对于小型应用程序而言)。

答案 6 :(得分:0)

我熟悉的组合:wxPython,py2exe,upx

解决关于分发大小的最后一个问题的关键是使用upx来压缩DLL。看起来它们支持MacOS可执行文件。首次加载DLL时,您将支付初始减压惩罚。