代码改变世界

Python使用Pygtk和Py2exe打包遇到的问题

2010-11-15 11:23  CleverDeng  阅读(3969)  评论(2编辑  收藏  举报

最近花了一天的时间使用Pygtk开发了一个下载器Demo,这个小工具也可以认为是在线升级的原始模型,功能很简单,根据配置文件的Url地址下载数据到本地。
之前一直都没有接触过gtk编程,好在高中时就开始用VB写Winform程序,有事件触发机制编程的基础,因此上手写程序比较顺利,可是在打包部署时却遇到了不少的小麻烦。
恩,本篇文章不是介绍怎么开发这样的工具,而是介绍以下2个主题:
一、如何在windows平台下配置gtk开发环境
二、使用Py2exe打包
也许您会认为安装软件是很容易的事情,可是我花在这2个主题上的时间比编码实现功能的时间的比例是2:8,也许是我在这2个主题上接触少,研究不够透彻。

一、如何在windows平台下配置gtk开发环境

这个环节还是非常容易的,可以从官方网站下载到安装文件,但值得的注意的是:您的Python环境建议使用2.6以下,2.6以上的打包时会出现无法找到module等错误,在
2.6以上的环境下解决办法没有找到,我是使用Python2.5解决这个问题的。
1、安装Python2.5(设置PATH)
2、安装pygtk:
      >> PyCairo
      >> PyGObject
      >> PyGtk
3、安装gtk+运行时
   将下载的安装包解压后并设置PATH

以上步骤完成后,我们就可以写个小小的测试程序检验是否成功安装:(以下是在Python命令行模式下)

>>>import pygtk
>>>import gtk
>>>window = gtk.Window(gtk.WINDOW_TOPLEVEL)
>>>window.show()

 

运行以上程序,如果弹出窗口,那说明您的运行环境安装成功,那么我们可以顺利进行第2个主题了。

二、使用Py2exe打包

我们知道您开发的程序运行在客户机器上,他们的机器一般是不能直接运行您的程序的。比如客户机器如果没有安装Python运行环境就不能运行使用Python语言编写的程序,
那么如何让这些机器运行程序呢?我们必须使用Python的打包工具制作成能够运行在没有安装python运行环境的机器上程序。比如这些Py2exePyInstaller
安装Py2exe
制作打包配置程序,格式如下:(Setup.py)

from distutils.core import setup
import py2exe

opts
= {
"py2exe": {
"includes": ["pango", "atk", "gobject", "gtk", "cairo", "pangocairo"],
}
}

setup(
name
= "Demo",
description
= "Demo App",
version
= "Demo",
windows
= [{"script": "AppName.py","icon_resources": [(1, "*.ico")]}],#Python程序文件和程序Ico
options=opts
)

 

这时我们可以使用命令将我们使用Python语言编写的程序打包:
Python Setup.py py2exe

运行上面的命令后,我们就得到这个文件夹dist、build,其中dist文件夹下的文件就是打包后的程序了,可以独立运行在没有安装Python环境的机器上。
恩,这是一般程序的打包步骤,但是对本篇文章介绍的主题而言,我们还需要做一些工作,因为gtk有默认的字体和一些运行库,我们需要将gtk安装文件下的(etc,lib)
文件夹复制到dist文件下。这样我们的程序将可以正常的运行了。

三、问题总结

我再使用pygtk和打包的时候,遇到过以下这些问题,并有相应的解决方案,当您在遇到这些问题之时,希望对您有所帮助。

Q:gtk在Python2.6以上版本时打包出现警告信息或错误信息,导致程序无法运行,是因为版本问题。
A:可以考虑降低Python的版本,我是这么解决的。

Q:Py2exe打包后,运行程序无法找到modules或library
A:在Setup.py安装配置文件中使用includes,将library包含进来

Q:Py2exe打包后,运行程序出现警告
A:由于gtk运行时有默认字体等库的使用,因此需要将gtk安装文件的这些文件夹(etc,lib)复制到dist下。

恩,这些问题都是我在开发这个工具并打包的过程中遇到的,希望对您有帮助,如果您在使用的时候也遇到了一些问题,不妨分享您是怎么解决的。