Fri, 27 Apr 2007
:: leo在Py2.5中的失败尝试
leo在Py2.5中的失败尝试
-- 中文应用问题是国人永远的心痛哪
2007-04-28 10:39:52
1. 背景
- 折腾了两天将Python2.5 编译了5回也没有搞定,询问大家是否有经验了!
- 一直知道 LEO 在Linux 下面的中文支持问题是Tk 造的孽
- 但是这两日怎么搞都不成!
- 详细记录在啄木鸟维基-ZoomQuiet/2007-04-27
- 请大家给点建议吧
- leo sf.net 讨论
1.1. 思路
我的步骤和思路:
- 不能影响现存的Py2.4 环境
- 使用Py2.5 进行尝试 因为:
-
LEO 仅仅需要Python with Tk+Pwm
- (不过要求Tcl 不能使用线程支持参数)
所以: - 只要安装好Py2.5 就可以:
1.2. 安装步骤
- 安装最新 Tcl/Tk
download cvs snapshots from ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/ tcl/unix$ ./configure --enable-shared --enable-gcc $ make clean && make $ sudo make install ... /tk/unix$ ./configure --enable-xft $ make clean && make $ sudo make install ...
安装Python2.5 并绑定Tk8.5 -
根据前人Py2.5安装经验
$ sudo cp path/to/libtcl8.5.so /usr/lib/ $ sudo cp path/to/libtk8.5.so /usr/lib/ ... /python2.5-2.5.1.orig$ ./configure --enable-unicode=ucs4 \ --with-tk --with-tk-library=/usr/local/lib --with-tk-include=/usr/local/include/tcl8.5 \ --with-tcl-library=/usr/local/lib --with-tcl-include=/usr/local/include/tcl8.5 $ make clean && make $ make test
安装 LEO -
cp -r Pmw /usr/local/lib/python2.5/site-packages/ cp -r leo-4-4-3-alpha-2 /opt/bin/
1.3. 失败的结果
- OK,结果 在
/opt/bin/leo-4-4-3-alpha-2/src中直接调用leo.py 可以运行; - 但是LEO 不能正當影响 Ctrl+c|v|s 等等各种操作;直接就死了...
/opt/bin/leo-4.4.3a2/src$ python2.5 leo.py reading settings in /opt/bin/leo-4.4.3a2/config/leoSettings.leo reading /home/zoomq/.leoRecentFiles.txt rst3 plugin: SilverCity not loaded rst3 plugin not loaded: can not load docutils Traceback (most recent call last): File ''/opt/bin/leo-4.4.3a2/src/leoEditCommands.py'', line 7903, in getAspellWithCtypes self.aspell = aspell = ctypes.CDLL(g.os_path_join(self.aspell_bin_dir, ''aspell-15.dll'')) File ''/usr/local/lib/python2.5/ctypes/__init__.py'', line 340, in __init__ self._handle = _dlopen(self._name, mode) OSError: /opt/bin/leo-4.4.3a2/src/c:\aspell\bin/aspell-15.dll: cannot open shared object file: No such file or directory Traceback (most recent call last): File ''leo.py'', line 353, in <module> run() File ''leo.py'', line 138, in run g.app.gui.runMainLoop() File ''/opt/bin/leo-4.4.3a2/src/leoTkinterGui.py'', line 186, in runMainLoop self.root.mainloop() File ''/usr/local/lib/python2.5/lib-tk/Tkinter.py'', line 1023, in mainloop self.tk.mainloop(n) File ''/usr/local/lib/python2.5/site-packages/Pmw/Pmw_1_2/lib/PmwBase.py'', line 1751, in __call__ _reporterror(self.func, args) File ''/usr/local/lib/python2.5/site-packages/Pmw/Pmw_1_2/lib/PmwBase.py'', line 1777, in _reporterror msg = exc_type + ' Exception in Tk callback\n' TypeError: unsupported operand type(s) for +: 'type' and 'str'到底咋回事儿泥?!
动力源自::txt2tags
::Fri, 27 Apr 2007 10:00 GMT
Sun, 28 May 2006
:: /Zen/pythonic/tryt2t.py
PREFORMATTER_ID = 'txt2tags'
FILE_EXT = 't2t'
__version__ = '$Id: tryt2t.py 299 2006-01-16 09:24:05Z zoomq $'
__author__ = 'Zoom.Quiet <Zoom dot Quiet at gmail.com>'
#T2T = "/usr/local/bin/txt2tags"
T2T = "t2t"
def cb_entryparser(args):
args['t2t'] = parse
#args[FILE_EXT] = readfile
return args
"""
def parse(filename):
#html = publish_string(story, writer_name='html')
import os
act = T2T+" -t html -H --toc %s"%filename
html = act
html += os.popen(act).read().strip()
#return html[html.find('<body>') + 6:html.find('</body>')]
return html
"""
#def parse(filename, request):
def parse(filename):
import os, sys
from StringIO import StringIO
# open own source
#config = request.getConfiguration()
act = T2T+" -t html -H --toc -o - %s"%filename
#source = open(filename).read()
#out = StringIO()
#html = os.popen(act).read().strip()
print act
#print os.popen(act).read().strip()
# write colorized version to "python.html"
#Parser(source, out).format(None, None)
#print out.getvalue()
"""
entryData = {'body' : out.getvalue(),
'title' : filename.replace(config['datadir'], '')}
return entryData
"""
parse("py-code-rule.t2t")
::Fri, 27 Apr 2007 10:00 GMT
del.icio.us
