« [Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件2 | トップページ | まだ秋なのかな、やっと秋なのかな »

2010年11月29日 (月)

[Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件3

2010-11-29(月)晴れ

 さて、前回まで sys.setdefaultencoding('utf-8')  を実行させる方法を工夫してきたわけです。それというのも、site.py の中で実行される sitecustomize.py が、(Python起動時に参照しているフォルダに)用意できない(ユーザはフォルダに書き込めない)という問題があったからです。
 では、site.py の中で sitecustomize.py が実行されるタイミングでの sys.path (モジュールを検索するパスのリスト)はどうなっているかを調べてみました。

 AllFiles化してあるNokia 5800 XMで site.py を書き換えてテストします。 site.pyの中で、 sitecustomize.pyをコールしている行の次ぎに、下記処理を追加します。そして、Python立ち上げ直後に「print sys.path」を実行して、 sys.pathの内容を見ることにします(site.py の中で直接「print sys.path」を実行しても表示されません)。

---- 追加する処理 ---------------------
sys.path.insert(0, E:\\)
sys.path.append(E:\\)
--------------------------------------
 こうやって、その時のsys.pathリストの前後に、E:\\のマーカーを付けるわけです。

----何もしないときのリスト----------------
['C:\\Private\\e7881dfa\\lib.zip',                <-- 注1
'c:\\resource\\python25\\python25.zip',
'c:\\resource\\python25',
'e:\\python\\lib']
-------------------------------------

----上記2行の処理を追加したとき--------
['C:\\Private\\e7881dfa\\lib.zip',                <-- 注1
'E:\\',
'c:\\resource\\python25\\python25.zip',
'c:\\resource\\python25',
'E:\\',
'e:\\python\\lib']
--------------------------------------

 注1:これは、Pythonをc:メモリにインストールした場合です。
    E:メモリにインストールすると
    E:\\Private\\e7881dfa\\lib.zip になります。

 これでみると、site.py の中では
---------------------------------------
'c:\\resource\\python25\\python25.zip',
'c:\\resource\\python25',
---------------------------------------

だけが参照されるパスです。最初と最後のパスは、sitecustomize.py 実行の後(実際はsite.py 実行の後らしい)に追加されるようです。
 site.pyのモジュール内を見ると、実際にフォルダが有れば

----------------------------------------
['C:\\Private\\e7881dfa\\lib.zip',
'c:\\resource\\python25\\python25.zip',
'c:\\resource\\python25',
'c:\\resource\\python25\\site-packages',
'c:\\resource\\python25\\site-python',
'e:\\python\\lib']
----------------------------------------
となるようですが、現実には「'c:\\resource\\python25\\site-packages」、「c:\\resource\\python25\\site-python」をユーザが作ることは出来ませんから、これが追加されることはありません。

 ということで、 sitecustomize.py を用意して実行させることは出来ないことが分かりました。大分勉強になりましたが、とりあえずは、ここまででしょうか。私としては、Python 2.0.0 のバージョンアップ待ちということになります。

 

|

« [Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件2 | トップページ | まだ秋なのかな、やっと秋なのかな »

Python」カテゴリの記事

アプリケーション」カテゴリの記事

携帯電話」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/50156228

この記事へのトラックバック一覧です: [Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件3:

« [Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件2 | トップページ | まだ秋なのかな、やっと秋なのかな »