leo在Py2.5中的失败尝试
-- 中文应用问题是国人永远的心痛哪


%! Target  : xhtml
%! Encoding: UTF-8
%! Options : --toc --css-sugar --enum-title



= 背景 =
- 折腾了两天将Python2.5 编译了5回也没有搞定,询问大家是否有经验了!
- 一直知道 LEO 在Linux 下面的中文支持问题是Tk 造的孽
 - http://linux.ccidnet.com/art/738/20060430/545737_1.html


- 但是这两日怎么搞都不成！
- 详细记录在[啄木鸟维基-ZoomQuiet/2007-04-27 http://wiki.woodpecker.org.cn/moin/ZoomQuiet/2007-04-27]
 - **请大家给点建议吧**
 - [leo sf.net 讨论 http://sourceforge.net/forum/forum.php?thread_id=1724164&forum_id=10227]



== 思路 ==
我的步骤和思路:

+ 不能影响现存的Py2.4 环境
+ 使用Py2.5 进行尝试

: 因为: 
  LEO 仅仅需要Python with Tk+Pwm
  - (不过要求Tcl 不能使用线程支持参数)
: 所以:
  只要安装好Py2.5 就可以:



== 安装步骤 ==

+ 安装最新 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安装经验 http://blog.csdn.net/fyzhao/archive/2006/12/27/1464614.aspx]

```
$ 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/
```



== 失败的结果 ==

- 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'
```

**到底咋回事儿泥？！**




------------------------------
- t2t渲染:: %%date(%Y-%m-%d %I:%M:%S)
- 动力源自::**[txt2tags http://txt2tags.sf.net]**

% Leo 4.7.1 final, build 3005: 编辑


