当我从集成终端运行我的 Python 程序时,Visual Studio Code
一切都很顺利,并且我得到了应有的颜色,如以下屏幕截图所示:
但如果我跑完全相同的文件从同一文件夹但直接从cmd.exe
,就会发生以下情况:
为了使我的输出有颜色,我使用了模块colorama
(v0.4.4
),但它只包含常量(即第二个屏幕截图中显示的字符[36m
),并且由于它在 VS Code 中完美运行,所以我不认为问题是由模块引起的。
有人遇到过同样的问题吗?在这种情况下,你能告诉我你是如何解决的吗?这与系统设置有关吗?
编辑
正如答案中所建议的,我尝试用 来做这Windows Terminal
件事,这是我以前没有尝试过的,因为当时调用的Powershell
没有工作,所以在升级到 之后Windows 11
(实际上在上面的屏幕截图时我已经在使用了11
)我没有尝试使用这个终端。
猜猜怎么着?它运行完美,谢谢!
答案1
这些]
东西是ANSI 序列用于格式化。VS Code 中的终端支持 ANSI 序列,因此您显然会正确看到颜色。您在屏幕截图上看到的是 conhost.exe,它是 cmd.exe 附加到的经典终端,并且您以某种方式禁用了其中的 ANSI 序列支持。要么脚本直接调用 Win32 控制台 API 并禁用 ANSI 序列支持(不太可能),要么该功能已通过其他方法关闭
我相信这是因为你使用的是 Windows 10,并且Windows-11问题上的标签是错误的。屏幕截图与 Windows 10 完全相同。此外,在 Windows 11 上,您无需执行任何操作即可在 conhost.exe 中启用 ANSI 序列支持,而在 Windows 10 上,您可能需要创建注册表项来启用它
因此,第一个解决方案是在注册表中创建一个名为的新 DWORD VirtualTerminalLevel
,路径HKEY_CURRENT_USER\Console
为 1。之后 conhost.exe 将正确显示颜色
更好的解决方案是使用Windows 终端这是 Windows 上较新的终端,除了支持 ANSI 序列之外还具有更多功能,例如表情符号、完整的 Unicode 支持……
也可以看看