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
に直して解決。
…くそうえらい無駄な時間を食った…