最初ビルド工程そのものが変になってるんじゃないかと疑いましたが、どうもprint文の出力がバッファに溜まっていて起きる現象のようです。
build_native.py から Eclipse のコンソールへ表示されるパスは、主に print文と、os.system()でコマンドを実行した時があります。
os.system()で実行したコマンド結果は、直ぐにコンソールに反映されますが、print文の出力はバッファに溜まったままになっている事があって、直ぐにコンソールに反映されません。直ぐに反映させるには、明示的にバッファをフラッシュしてやらなければいけないようです
実験として、build_native.pyを以下のようにすると、僕の環境では lsコマンドの実行表示後に、Buildスタート!と表示されました。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# importモジュールはbuild_native.pyから引き継いでいるので、ここでは必要ないものもあります
import sys
import os, os.path
import shutil
import codecs
from optparse import OptionParser
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
print u"Build スタート!"
os.system("ls -la")
そこで、以下のようにprint文の後に flush()を実行してやると、Eclipseのコンソールでも正しい順番で表示されるようになりました。
print u"Build スタート!"
sys.stdout.flush()
os.system("ls -la")
pythonは詳しくないので、僕は build_native.py の全 print文の直後にflush()を挿入しましたが、もっと良い方法がありましたら教えて下さい。m(__)m
0 件のコメント:
コメントを投稿