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

为什么Windows终端中Python输出彩色文本无效?IPython正常终端异常

为什么Windows终端无法显示ANSI转义序列的彩色输出?

嗨,这个问题我太熟了!之前帮同事排查过一模一样的情况——核心原因就是Windows默认终端和IPython的环境对ANSI转义序列的支持不一样,具体来说:

问题根源

  • Windows终端的默认限制:
    你用的\033[92m这类是ANSI转义控制码,Linux/macOS的终端默认就支持解析这些码来显示彩色,但Windows这边就不一样了:
    • Windows 10之前的cmd完全不识别这类控制码,直接把[92m当成普通文本输出;
    • Windows 10及之后的cmd、PowerShell虽然有支持ANSI的能力,但默认是关闭状态,所以也会直接输出控制字符。
  • IPython的特殊适配:
    IPython本身自带了终端模拟功能,不管你底层用的是什么系统终端,它都会在内部处理ANSI转义码,所以在IPython里能正常显示彩色,但直接在Windows终端跑Python脚本就没这个适配了。

解决办法

这里给你几个实用的方案,选哪个都行:

1. 开启Windows终端的ANSI支持

针对Windows 10+的cmd或PowerShell:

  • cmd下:打开cmd,执行这条命令,然后重启cmd生效:
    reg add HKEY_CURRENT_USER\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
    
  • PowerShell下:执行这条命令,重启PowerShell生效:
    Set-ItemProperty -Path HKCU:\Console -Name VirtualTerminalLevel -Type DWORD -Value 1
    

2. 用第三方库自动适配(最省心)

不用自己写ANSI码,用colorama库,它会自动帮你处理Windows和类Unix系统的差异:

  • 先安装库:
    pip install colorama
    
  • 然后修改你的代码:
    from colorama import init, Fore
    init(autoreset=True)  # 开启自动重置,避免后续文本都继承前面的颜色
    print(Fore.GREEN + "test1")
    print(Fore.RED + "test2")
    
    这样不管在IPython还是Windows终端,都能正常显示彩色。

3. 改用新版Windows Terminal

微软推出的Windows Terminal(可以从应用商店免费下载)默认就完全支持ANSI转义序列,不用任何配置,直接运行脚本就能看到彩色输出,而且它还支持多标签、自定义主题,用起来比旧版cmd/PowerShell舒服多了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:08:45