失败经历--在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 ...
随机推荐
- unity中js脚本与c#脚本互相调用
unity中js脚本与c#脚本互相调用 test1.js function OnGUI() { if(GUI.Button(Rect(25,25,100,30),"JS Call CS& ...
- 使用SourceTree
SourceTree是个git的GUI软件. 教程将“使用Git”那个小节可视化,更为直观. 第一次启动的时候选择忽略,然后直接进入界面. 填入git地址与注册邮箱即可 例如mindset这本书的g ...
- 强大的矢量图形库:Raphael JS 中文帮助文档及教程
Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创建图形的基础,你可以通过 JavaScript 操作 DOM 来轻松创建出 ...
- 典型的字符串处理代码(page50)
Page50: public class TypicalString{//典型的字符串处理代码 public static boolean isPlalindrom(String s){//判断字符串 ...
- Linux的SOCKET编程详解
1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 U ...
- js中Math()函数&&数据类型转换
Math()函数: x的y次方:Math.pow(x,y) 取小数点后两位:num.toFixed(2) 数据类型转换: 字符串转换为数字:parseInt(num)转换为整数:parseFloat( ...
- Terminate program hitting CTRl+C within GDB
Q: My program is determined to stop its execution by hitting CTRL+C in command window. By now, i hav ...
- weimi 短信API post方式的简易代码。
http://www.weimi.cc/example-csharp.html string mobile = "<enter your mobiles>", con ...
- CSS标签知识
一.内联标签和块标签的区别 内联,内嵌,行内属性标签: 1.默认同行可以继续跟同类型标签: 2.内容撑开宽度 3.不支持宽高 4.不支持上下的margin和padding 5.代码换行被解析 块属性标 ...
- Redis中hash表中的field的value自增可以用hincrby
Redis HINCRBY命令用于增加存储在字段中存储由增量键哈希的数量.如果键不存在,新的key被哈希创建.如果字段不存在,值被设置为0之前进行操作. 回复整数,字段的增值操作后的值. redis ...