Pythonのバージョン

Vine4.0上でPythonのバージョン違いでハマッた。

一般ユーザー(いつも使っているユーザー)でRoxのWallpaperを起動しようとすると、次のようなエラーが出て起動できない。(rootでは普通に起動できる。)

$ Apps/Wallpaper/AppRun
Traceback (most recent call last):
  File "Apps/Wallpaper/AppRun", line 11, in ?
    import rox
  File "/usr/lib/ROX-Lib2/python/rox/__init__.py", line 72, in ?
    sys.stderr.write(_('The pygtk2 package (2.0.0 or later) must be '
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)

どうやらPython文字コードの設定が間違っているようだ。
調べてみると、rootと一般ユーザーとで起動するpythonのバージョンが違っている。rootでは2.4.4なのに、一般ユーザーでは2.3.4である。試しに日本語を処理させてみたら、やはり2.3.4では上記と同じエラーが出る。

# python
Python 2.4.4 (#1, Oct 19 2006, 19:38:46)
[GCC 3.3.6 release (Vine Linux 3.3.6-0vl7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hoge=u"生徒会長"
>>> print hoge
生徒会長
>>>
$ python
Python 2.3.4 (#1, Aug 10 2006, 15:26:19)
[GCC 3.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hoge = u"生徒会長"
>>> print hoge
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
>>>

なんでこんなことが起こるのか?
whichでPythonの本体を調べると。rootは

# which python
/usr/bin/python

なのに、一般ユーザーは

$ which python
/opt/openoffice.org2.0/program/python

となっていた。

ここまで分かってしまえば原因の特定はわけもない。一般ユーザーの.bash_profile中でOpenOffice.orgへのパスを$PATHより前に書いていたのが原因だった。

PATH=$HOME/.bin:/opt/openoffice.org2.0/program:$PATH

PATH=$HOME/.bin:$PATH:/opt/openoffice.org2.0/program

に直して解決。

…くそうえらい無駄な時間を食った…