2008年7月25日星期五

Windows如何编译python 2.4的pyd模块

今天试图安装envisage,但它提供的最新版本都是为python 2.5提供的,于是我下载了源代码来自己编译,结果enthought.traits这个包里面有个pyd动态库,需要编译。

执 行python setup.py install,它先说找不到gcc,我把gcc-mingw的位置加到PATH中,但编译无法通过,链接是有一大堆的_imp_Pyxxxxx找不到。 看这个前缀,好像是Microsoft Visual C++编译器的习惯,而Windows上的python官方版一向都是用msvc编译的(不知道他们怎么不用gcc)。

总不至于要我安装 一个Visual Studio吧,而且python 2.4是用VS.NET 2003编译的(sys.version里面显示编译器版本为v.1310)。在网上找了半天,找到一个Visual C++ 2003 toolkit(微软已经不再提供下载,各位得仔细找找)。

但还是折腾了半天才搞定,方法如下:
1. 安装Visual C++ 2003 toolkit, 它只包含编译、链接工具,以及基本的C/C++库。
2. 安装Platform SDK (用gcc-mingw的库和头文件也可以)
3. 修改distutils/distutils.cfg,将编译器由mingw改为msvc (好像是上次安装gcc-mingw时它设置的,不过我用gcc-mingw一直没成功编译)
4. 修改distutils/msvccompiler.py,将MacroExpander.load_macros()里面对dotNet Framework的检测代码删掉(有必要检查这个么,奇怪); 然后仿照Python 2.5的做法修改MSVCCompiler.initialize(),改成如下(Python 2.5里面那个对MSSDK环境变量的检查也是没有必要的)

def initialize(self):
self.__paths = []
if os.environ.has_key("DISTUTILS_USE_SDK") and self.find_exe("cl.exe"):
# Assume that the SDK set up everything alright; don't try to be
# smarter
self.cc = "cl.exe"
self.linker = "link.exe"
self.lib = "lib.exe"
self.rc = "rc.exe"
self.mc = "mc.exe"
else:
//原来的老代码
6. 启动vc2003 toolkit的Command Prompt,然后按如下方式编译

set MSSDK=Platform SDK或者gcc-mingw的安装目录
set include=%INCLUDE%%MSSDK%include
set lib=%LIB%%MSSDK%lib
python setup.py install

2008年7月23日星期三

最近感兴趣的一些东东(非技术方面 )

就写两则与科幻有关的吧:
  • 在书店看见了刘慈欣的《三体》续集《黑暗森林》,还没开始看。我这人记忆力不太好,《三体》的故事只记得开头和那个虚拟的三体世界游戏这两部分了,后面的都忘记了,回顾一下再看这本吧,不过据说故事比较独立

最近感兴趣的一些东东

好久没写blog了,其实感想还是有不少,但前段时间工作比较忙,同时在下班后尽力远离电脑(为了身心健康:-)。

最近感兴趣的一些东东:

技术方面:
  • FBReader 电子书阅读器,可以在很多PDA/手机上用,Motorola版本最近发了0.8.14(上次能找到的版本还是两年前的0.7.4,这个版本支持chm、支持从压缩文件读取文件,而且操作方面也跟Anyview有得一拼了(Anyview还是0.3最好使,后面3.x版本实在不怎样)。另: 国内的论坛真没劲,下载个东西还老要注册)
  • UnMHT: Firefox扩展,可用于打开/保存mht格式,代替原来的Mozilla Archive Format扩展(这个扩展已经不再维护了)
  • FreeMind: 思维导图(mind mapping,类似于鱼骨图,用于整理思路)软件。FreeMind除了使用起来比较方便之外,比较强的是可以生成一个Flash,其他人就可以查看 了。这是采用Java写的开源程序,如果Java对你而言是个问题,网上有很多免费不免费的工具,对于Linux上,可以查看这个网页上列出的软件
  • AideRSS: 是不是用了RSS reader订阅了很多新闻,多得你都看没时间看完呢?怎么找出最有价值的东西?AideRSS服务的目标就是给每条新闻提供rank,以便你可以看到哪 些是”最红“的。它还提供了Firefox上对Google Reader的支持,使得可以直接过滤出最有价值的新闻

Envisage: 采用Python实现的Eclipse?

Eclipse让人不爽的就是体积、速度和插件版本配合。

以前看NewEdit/Ulipad,发现它的可扩展性也挺强的,它的基本思想就是mixin, 而看见Peppy这个继承EMACS思想的编辑器就更引发我想: 有没有采用Python实现的、类似于Eclipse的项目/平台。

然后找到Envisage,一个基于python的应用程序框架,关注不同插件的配合与组合,设计思想上参考了Eclipse。界面采用wxPython,也有workspace, perspective, text editor这些东西。

但Eclipse最大的优势是目前已经深入人心,有相当多各种各样的插件了,这是其它东西暂时(也许永远?)无法比肩的。