如何阻止GNU make缓存Python输出?

时间:2012-08-15 10:30:34

标签: python stream makefile

以下示例Python程序打印更新进度条。

progress.py :

import sys
import time

for i in range(100):
    sys.stdout.write("\r%3d%%" % (i + 1))
    sys.stdout.flush()
    time.sleep(.02)
sys.stdout.write("\n")

但是,当使用以下Makefile通过GNU Make(来自Ubuntu上的Bash)运行它时,输出似乎是缓冲的,直到遇到换行符,因此进度更新不可见。为了确保无限输出是为Python指定的。

all :
    python -u progress.py

使用make?

时,有没有办法让部分线输出立即可见?

1 个答案:

答案 0 :(得分:2)

我最终将此跟踪到makecolormake中的/etc/bash.bashrc别名。

> type make
make is aliased to `colormake'

似乎colormake缓冲输出。据推测,它需要在着色之前解析整行。

这是通过添加:

来解决的
unalias make

~/.bashrc

> type make
make is /usr/bin/make