You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sublime Text 3.x自定义构建Python 2.7.x运行输出错乱问题求助

解决Sublime Text 3中Python 2.7自定义构建环境的输出错乱问题

嘿,这个问题我之前踩过一模一样的坑!本质是标准输出(stdout)和标准错误(stderr)的缓冲机制差异搞的鬼。

你看,代码里print 'wow'是往stdout输出的,而assert抛出的异常信息是走stderr通道。在Sublime的构建环境里,stdout是带缓冲的——它会攒够一定内容才一次性输出,而stderr是无缓冲的,有内容就立刻打出来。这就导致了顺序错乱:print的内容还在缓冲里没完全输出,异常的错误信息已经先跑出来了,甚至出现"wo"这种被拆分的半截内容。

给你两个靠谱的解决办法:

办法1:手动刷新输出缓冲

修改代码,在print之后强制刷新stdout,让内容立刻输出:

import sys
def a(x): 
    assert x>0,'invalid argument' 
    print 'wow'
    sys.stdout.flush()  # 强制把缓冲里的内容立刻输出
a(2) 
a(0)

办法2:修改Sublime构建配置

编辑你的Python 2.7自定义构建文件(.sublime-build格式),给Python命令加上-u参数,禁用输出缓冲:

{
    "cmd": ["python2.7", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

-u参数会让Python的stdout和stderr都变成无缓冲模式,两个流的输出就会严格按照代码执行的顺序显示了。

亲测这两个办法都能解决你遇到的输出错乱问题,选哪个看你更习惯改代码还是改配置~

内容的提问来源于stack exchange,提问作者underflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:55