缘起

在linux下,最早用的比较工具是vim,这是作为一个vimer的自尊(其实没有关系吧)。终于有一天,在比较同一个项目的两个版本的时候,比较了两三个文件后,看着vim里面花花绿绿的颜色,实在是受不了了。而且比较的结果也让人迷惑。两边明明是一样的,却显示为不一样。我决定另寻出路。

在git中,推荐的比较工具是meld,那就这个好了,也不管是不是因为是不是按照字母序排的。

一用之下,效果甚好。颜色整体偏浅,恰到好处。而且缺少,增加用一个插入的图形化表示,很直观形象,一看就明白了。还有比较文件夹的功能。实在是不能更好了。

windows

自然而然的想在windows下能不能跑meld。以前用的比较,一直是total command,但是用了meld之后,感觉再也回不去了。windows下也有比较工具,网上评价最高的是beyond compare。遗憾的是,是收费的。虽然网上有注册码,而且能用,但是总不如把meld装在windows下舒服。上网一查,还真有在windows下的安装包,把python和gtk整体打包了。

一安装,运行meld.exe,没反应。就知道,没有那么便宜的事情。一条崎岖的道路,才刚刚开始而已。

meld.exe只是一个启动器而已,最后的任务是交给bin目录下的meld,这是一个python脚本。同时还有一个meldc.exe是一个命令行的启动器。为了看是出什么问题了,在bin目录下启动命令行,运行python meld。显示是,import pygtk出错,后面还有一句是无法找到相应的dll。

把这个卸载了,重新安装meld,这次不安装python和gtk,而用本来就有的python,并到网上下载gtk的all-in-one安装包。然后在环境变量中添加PYTHON_HOME环境变量。再次运行meld,还是一样的结果。

回过头来,研究错误信息,不能import。于是我打开python,试了一下import pygtk,可以。这就奇怪了。无奈之下,只好修改源代码,在import pygtk利用pdb加了断点。一运行,发现是import gtk时候出错。两次import,出错报的信息是一样的。在解释器下运行 import gtk,果然报错。根据堆栈信息是在import _gtk时出错。而_gtk是一个pyd文件。到这里卡住了。

继续上网搜索。

这时候注意到了dll错误。一般导入失败,不会有这个提示,应该是pyd中引用了一些dll,而找不到这些dll才会报错。那怎么样才能找到究竟是在哪一个环节上出错了呢?

dependence walker

这个工具可以找到一个文件的dll依赖。我们在这个工具中打开_gtk.pyd。这时候,报错,缺少了一些dll。一部分是gtk运行时库的。一部分是一些很奇怪的东西:MSVCR90.DLL IESHIMS.DLL MOBSYNC.DLL WER.DLL。第一个是比较熟悉的,之前也都有遇到过,在电脑中也可以找到,其他几个没见过。但是,作为一个all-in-one的安装包难道不应该把这些处理好吗?只好自己上网找,然后扔进_gtk.pyd的目录。然后扔一个进去,又出来一个依赖。如此重复四五次,总算是不报错了。但是还是启动不起来。果然,不能这样子一个一个来的吧。

放弃

已经过去了4个小时了,meld不装也可以的嘛。盗版就盗版了。进入清理阶段。把meld卸掉,然后把pygtk卸掉。pygtk怎么卸?直接删文件吗?感觉散布到好多地方,删不干净啊。这连卸载也要这么麻烦吗?

然后偶然的发现,重新运行安装程序,会提示是修复还是移除(-_-!)。

ps:在写文章的时候,不甘心,又跑去重试。不用all-in-one,手动一个一个安装。结果更糟糕了。想想在linux下,一句sudo apt-get install 就搞定一切了。

最新文章

  1. MySQL集群在断网后再启动报"Unable to start missing node group"问题处理
  2. x-editable 的使用方法
  3. Spring IOC容器中注入bean
  4. Linux下GPIO驱动(四) ----gpio_request();gpio_free();
  5. Dynamips做CCNA的实验,说是找不到telnet的解决方案
  6. 获取和设置select和checkbox的值
  7. RedHat9上安装jdk
  8. C#编辑基础笔记
  9. C语言学习之选择排序
  10. cocos creator主程入门教程(五)—— 日志系统
  11. iframe关闭操作
  12. The.Glory.of.Innovation 创新之路2科学基石
  13. RESTful Loads
  14. 【Hbase学习之五】HBase MapReduce
  15. InfluxDB 的UTC时间问题与简单的持续查询语句
  16. 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。
  17. liunx服务程序的安装及配置
  18. const define static extern 关键词详解
  19. Django中CSS加载background url('')问题
  20. [Asp.Net]最近一个项目的总结

热门文章

  1. UITextField的简单操作和实际应用
  2. 《算法导论》习题解答 Chapter 22.1-5(求平方图)
  3. mysql表的创建和删除
  4. Java跳出循环-break和continue语句
  5. [转]如何烧录tizen镜像文件?(图文教程)
  6. MAC如何直接管理安卓手机文件(转)
  7. 基于Qt的Tcp协议的流程图
  8. Convert.ToInt32( null or "")
  9. curl模拟浏览器进行phpQuery抓取数据
  10. Backbone.js学习之Model