Python GUI应用程序重新分配
我需要开发一个中小型桌面GUI应用程序,由于时间限制,最好使用Python作为选择的语言。
我有哪些GUI库选择,可以让我独立地重新分发应用程序,假设用户没有可正常使用的Python安装,并且显然也没有我正在使用的GUI库?
另外,对于每个目标操作系统,我将如何将所有内容打包到合理大小的二进制文件中? (我的主要目标是Windows和Mac OS X)
添加:
我一直在研究WxPython,但是我发现了很多用cx_freeze打包并获得30mb +二进制文件的恐怖故事,却没有关于如何实际进行打包以及如何值得信赖的真正建议。
解决方案
这可能会有所帮助:
如何从Python程序制作EXE文件?
我自己使用过py2Exe真的很容易(至少对于小型应用程序而言)。
http://wiki.wxpython.org/CreatingStandaloneExecutables
除非我们设法包括了wx的调试版本,否则它应该不会太大。
我似乎对python.dll和similair对于wx的4Mb记忆犹新。
Windows的http://Gajim.org使用python和PyGtk。我们可以检查他们是如何做到的。另外,还有用于GUI的PyQt(以及前面提到的wxpython)。
Python有一个名为TKinter的嵌入式GUI工具箱,该工具箱基于TCL编程语言的Tk库。它是非常基础的,并且不具有Windows Forms或者GTK中所期望的所有功能,但是如果我们必须具有独立于平台的工具包,那么我别无选择,请记住我们也不想增加那么多的二进制文件。
Tkinter一点也不难使用,因为它没有数百万个小部件/控件和选项,并且是大多数python发行版(至少在Windows,OSX和Linux中)中包含的默认工具包。
GTK和QT更漂亮,功能更强大,但它们对我们来说却有一个很大的缺点:它们笨重并且依赖于第三个库,尤其是GTK,它具有很多依赖性,这使得分发嵌入到软件中的代码有点困难。
至于二进制创建,我知道有py2exe可以将python代码转换为win32可执行代码(.exe),但是我不确定OSX是否存在类似的东西。我们是否担心人们会看到源代码,或者只是将它们捆绑在一个软件包中而感到担心?如果只想捆绑创建独立可执行文件所需的所有内容,则可以轻松创建安装程序:
在python中创建可分发
这是完成后如何分发软件的指南。
我熟悉的组合:wxPython,py2exe,upx
解决我们对发行版大小的最后担忧的关键是使用upx压缩DLL。看起来他们支持MacOS可执行文件。首次加载DLL时,我们将支付最初的减压费用。
我没有为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中包含清单,否则清单将很难看。有关详情,请参阅此电子邮件。