失败经历--在windows下安装meld
缘起
在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 就搞定一切了。
最新文章
- MySQL集群在断网后再启动报";Unable to start missing node group";问题处理
- x-editable 的使用方法
- Spring IOC容器中注入bean
- Linux下GPIO驱动(四) ----gpio_request();gpio_free();
- Dynamips做CCNA的实验,说是找不到telnet的解决方案
- 获取和设置select和checkbox的值
- RedHat9上安装jdk
- C#编辑基础笔记
- C语言学习之选择排序
- cocos creator主程入门教程(五)—— 日志系统
- iframe关闭操作
- The.Glory.of.Innovation 创新之路2科学基石
- RESTful Loads
- 【Hbase学习之五】HBase MapReduce
- InfluxDB 的UTC时间问题与简单的持续查询语句
- 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。
- liunx服务程序的安装及配置
- const define static extern 关键词详解
- Django中CSS加载background url('')问题
- [Asp.Net]最近一个项目的总结
热门文章
- UITextField的简单操作和实际应用
- 《算法导论》习题解答 Chapter 22.1-5(求平方图)
- mysql表的创建和删除
- Java跳出循环-break和continue语句
- [转]如何烧录tizen镜像文件?(图文教程)
- MAC如何直接管理安卓手机文件(转)
- 基于Qt的Tcp协议的流程图
- Convert.ToInt32( null or ";";)
- curl模拟浏览器进行phpQuery抓取数据
- Backbone.js学习之Model