如前所言,需要让Python成为ActiveScript。
已经装了Python的请直接跳过这一步。没有Pyhont的,还是先去www.activestate.com,找个合适版本的ActivePython拉下来,装上。个人推荐ActivePython2.6和3.2都装上,让2.6作为默认的版本(安装过程选项中,最后一项是设置默认的Python),3.2用于面向未来(众所周知它默认支持UTF-8,中国人最该支持,又题外话了),并建议装x86而不是x6×4版(又是题外话,支持x86版本的Python扩展模块更多)。有关Python安装问题,找谷歌。
然后,也最重要的是,忘掉ActiveState默认安装的那个旧版的pywin32模块,自己动手丰衣足食,去这里下载一个最新版:http://sourceforge.net/projects/pywin32/files/pywin32/。我下的是:pywin32-216.win32-py2.6.exe(注意版本对应情况,下错了不能安装,白忙活)
覆盖安装pywin32。
我的python装在D盘,打开这里:D:\Python26\Lib\site-packages\win32comext\axscript\client
见证奇迹的时刻到了:运行pyscript.py!(双击一下,或者在cmd中敲"python pyscript.py)。就是这一步,才让Python具有ActiveScript的身份!!原理上,就是pywin32做了个二传手,把python封装成一个支持ActiveScript模式的东东。
呵呵,先别急,事情还没那么简单呢,还得先测试一下,WSH是否真正接受Python的注册了,我在这里吃过很多苦头。由于各台电脑情况不一样,问题也会多种多样,建议先测试好再进EmEditor。
pyscript运行的结果之一,是让WSH在处理后缀为.pys的脚本文件时,自动调用Python引擎。我们需要一个test.pys,我的是这样:
import sys
print "hello",sys.version
还是打开cmd,找到test.pys所在文件夹,敲入"cscript test.pys",执行。“wscript test.pys”情况类似,不熟悉WSH工作方式的,狂搜谷歌。
在我的电脑上,test.pys执行结果为:
Microsoft (R) Windows Script Host Version 5.7 版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
hello 2.6.6 (r266:84292, Jan 7 2011, 13:16:36) [MSC v.1500 32 bit (Intel)]
这里,我也遇到一个错误,我的test.pys是个带有BOM前缀的UTF-8格式的文档,死活出错。直到我想起来用Notepad++直接把它转换为ansi编码,才正确运行。
至此,可以被EmEditor接受的PythonScript(有些半吊子的帮助文档会这么称呼已经ActiveScript化的Python)才算打造成功。
在EmEditor中,编写一个test.py(注意,这里又可以直接用.py了),如下:
#language = "Python"
Window.document.write( 'Hello' );
保存到EmEditor文件夹下的\PlugIns\@bin\test.py
然后,菜单“宏”——“选择”——“全部文件”——"test.py",再“宏”——“运行test.py"
哦也!!
你成功了吗??
(全文完)
补充:
下午啰嗦了这么多,其实是因为自己走了很多弯路,想讲仔细点,以供千差万别情况下借鉴一二。
实际上,真正的问题还是如何让Python光荣加入ActiveScript行列,可叹pywin32这个东东的文档不够详尽,而ActivePython又集成的是旧版,贻误军情。在PythonScript成立之后,任何支持WSH脚本的应用,其实都可以调用Python了。晚上我才发现PsPad早就说“我能”了,应该还有一批这样的东东。
作为一名业余爱好者,我希望减少学习负担,尽可能用Python解决更多问题,哪有那么多时间去跟C#JavaVBRuby以及PowerShell们唧唧歪歪啊。一叹!