设为首页 收藏本站
查看: 877|回复: 0

[经验分享] Python使用Pygtk和Py2exe打包遇到的问题

[复制链接]

尚未签到

发表于 2015-4-22 03:03:37 | 显示全部楼层 |阅读模式
  最近花了一天的时间使用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运行环境的机器上程序。比如这些Py2exe、PyInstaller。
安装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下。
  
恩,这些问题都是我在开发这个工具并打包的过程中遇到的,希望对您有帮助,如果您在使用的时候也遇到了一些问题,不妨分享您是怎么解决的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59293-1-1.html 上篇帖子: python pycurl的用法 下篇帖子: python模块subprocess学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表