编辑

编辑

当我从集成终端运行我的 Python 程序时,Visual Studio Code一切都很顺利,并且我得到了应有的颜色,如以下屏幕截图所示:

带颜色的 VS Code 终端


但如果我跑完全相同的文件同一文件夹但直接从cmd.exe,就会发生以下情况:

控制台出现意外错误


为了使我的输出有颜色,我使用了模块coloramav0.4.4),但它只包含常量(即第二个屏幕截图中显示的字符[36m),并且由于它在 VS Code 中完美运行,所以我不认为问题是由模块引起的。

有人遇到过同样的问题吗?在这种情况下,你能告诉我你是如何解决的吗?这与系统设置有关吗?


编辑

正如答案中所建议的,我尝试用 来做这Windows Terminal件事,这是我以前没有尝试过的,因为当时调用的Powershell没有工作,所以在升级到 之后Windows 11(实际上在上面的屏幕截图时我已经在使用了11)我没有尝试使用这个终端。

猜猜怎么着?它运行完美,谢谢!

Windows 终端

答案1

这些]东西是ANSI 序列用于格式化。VS Code 中的终端支持 ANSI 序列,因此您显然会正确看到颜色。您在屏幕截图上看到的是 conhost.exe,它是 cmd.exe 附加到的经典终端,并且您以某种方式禁用了其中的 ANSI 序列支持。要么脚本直接调用 Win32 控制台 API 并禁用 ANSI 序列支持(不太可能),要么该功能已通过其他方法关闭

我相信这是因为你使用的是 Windows 10,并且问题上的标签是错误的。屏幕截图与 Windows 10 完全相同。此外,在 Windows 11 上,您无需执行任何操作即可在 conhost.exe 中启用 ANSI 序列支持,而在 Windows 10 上,您可能需要创建注册表项来启用它

因此,第一个解决方案是在注册表中创建一个名为的新 DWORD VirtualTerminalLevel,路径HKEY_CURRENT_USER\Console为 1。之后 conhost.exe 将正确显示颜色

更好的解决方案是使用Windows 终端这是 Windows 上较新的终端,除了支持 ANSI 序列之外还具有更多功能,例如表情符号、完整的 Unicode 支持……

也可以看看

相关内容