失败经历--在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 就搞定一切了。
失败经历--在windows下安装meld的更多相关文章
- [INS-30131] 执行安装程序验证所需的初始设置失败问题解决,windows下oracle安装步骤
[INS-30131] 执行安装程序验证所需的初始设置失败问题解决,windows下oracle安装步骤 配置: 系统:windows10 数据库:Oracle Database 12c 第 1 版 ...
- windows下安装ruby和 rails的痛苦经历
准备安装ruby on rails,在网上搜了下,步骤都类似,但实际安装过程中却碰到很多问题.下面详细说下: 说明下,文章是按照我尝试的过程描述的.但最终是靠 运行 railsinstaller一键式 ...
- windows下安装nginx
说起开发,自己感到非常惭愧,由于公司让我给<绿电侠>项目写整体架构解决方案,才开始接触nginx这个东东,突然觉得它是一把非常好的利器. 本文主要记录在windows下安装nginx,另参 ...
- Composer - windows下安装方法
在windows下安装的方法 方法一:使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer ...
- (转)windows 下安装配置 Nginx 详解
windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...
- windows下安装mysql遇到的问题
windows下安装mysql5.6.41步骤:http://www.cnblogs.com/sjy18039225956/p/9203052.html 系统错误2详见MySQL安装过程net sta ...
- windows下安装和配置redis
1.windows下安装和配置redis 1.1 下载: 官网(linux下载地址):https://redis.io/ Windows系统下载地址:https://github.com/MSOpen ...
- Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Enterprise Edition
Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) 最近因需要在Oracle 数据库上建立ODI的资料档案库,需要安装Oracle Database ...
- windows下安装Qt
1.Linux下安装Qt与MySQL相对来说比较容易,在这里我就不多加介绍. 接下来主要介绍windows下安装Qt与MySQL. 2.在windows,我安装QtCreator, 使用的是qt-wi ...
随机推荐
- Oracle 经典语法(三)
1. 让SELECT TO_CHAR(sal,'L99,999.99') FROM emp WHERE ROWNUM < 5 输出结果的货币单位是¥和$.SELECT TO_CHAR(sal, ...
- about tomcat ssl
http://www.kuqin.com/shuoit/20140615/340573.html 1SSL单向认证概念 当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供 ...
- HDU 1087 Super Jumping! Jumping! Jumping! (DP)
C - Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ...
- Sql server For XML Path 学习
最近看到太多人问这种问题 自己也不太了解 就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...
- LAMP+Proftpd+数据迁移
on Centos 6.5 64bit minimal 安装mysql [root@ftp ~]# yum install -y mysql mysql-server mysql-devel --安 ...
- Lambda表达式的本质是匿名函数
1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...
- 关于IIS中WEB网站访问弹“验证输入框”及“401限制访问”的解决办法
最近在配置IIS网站的过程中,不管是本地还是外部访问配置的网站,出现了需要输入用户名.密码.及域的对话框,解决之后又出现页面401限制访问的错误页面. 就这两项错误,依次做一下解决办法的整理. 解决流 ...
- 20141031--SQL分组,数学函数,聚合函数
/* 通过代码操作:创建一个数据库,里面有一个学生信息表, 内容包括:学号,姓名,性别,体重,年龄,语数外三门课分数,班级 插入20条数据 执行以下查询操作: 1.查姓王的同学的信息 2.分别查每门课 ...
- Facebook抛弃了HTML5,微信却捧火了它
苹果普及了HTML5技术,Facebook押注HTML5上,却受到不小的打击,导致在后来一段时间里,唱衰HTML5的言论成为媒体的一种幸灾乐祸的态度,人人避而不谈.微信通过公众号的形式,以游戏.营销重 ...
- JS正则表达式基础总结
定义正则: 1 var re = new RegExp(“a”); //RegExp对象.参数就是我们想要制定的规则.有一种情况必须用这种方式,下面会提到. 2 var re = /a/; // 简写 ...