pythonメモ pythonw.exeの注意点
ご存知の方も多いと思いますが、今日、はまってしまったのでメモしておきます。
ソースコード中にprint文を書いて、変数の値とかを出力している場合、の注意点です。
このメモはWindows環境でpythonw.exeでスクリプトを起動した場合に発生します。
現象としては、
・python.exeではちゃんと動いていた。(.py, .pyc)
・pythonw.exeで起動して使用していると、いきなり固まったりする。(.pyw)
です。
調べたところ、原因としては
pythonw.exeで起動した場合の標準出力、エラー出力は4096byte以上出力できない。
というものがありました。
回避方法としては
(1) stdout, stderrを自作のものにリダイレクトする
(2) カスタマイズした出力関数を作成して、Windows環境でpythonw.exeによって起動している場合には
なにも出力しないようにする。
でしょうかね。。。他にもあるかもしれませんけど。
私の場合、(2)にしました。
sys.platformでwin32かどうかを調べて、sys.executableからインタプリタの名前を取得してpythonw.exeだったら何もしない。といった感じです。