Quando executo meu programa Python a partir do Visual Studio Code
terminal integrado, tudo corre bem e tenho minhas cores como deveriam ser, como nesta captura de tela:
Mas se eu executar exatamente o mesmo arquivo da mesma pasta , mas diretamente de cmd.exe
, é isso que acontece:
Para deixar minha saída colorida, usei o módulo colorama
( v0.4.4
), mas ele contém apenas constantes (que são os caracteres que na segunda captura de tela são exibidos como [36m
) e, como funciona perfeitamente no VS Code, não acho que o problema seja causado pelo módulo.
Alguém teve o mesmo problema? Nesse caso você poderia me dizer como resolveu? Tem algo a ver com as configurações do sistema?
EDITAR
Como sugerido na resposta, tentei fazer isso com Windows Terminal
, algo que não havia tentado porque a chamada no momento Powershell
não funcionou, então depois de atualizar para Windows 11
(na verdade no momento da captura de tela acima eu já estava usando 11
) não tente usar este terminal.
E adivinha? Funciona perfeitamente, obrigado!
Essas
]
coisas fazem parte da sequência ANSI para formatação. O terminal no VS Code suporta sequências ANSI, então obviamente você verá as cores corretamente. O que você está vendo na captura de tela é o conhost.exe, que é o terminal clássico ao qual o cmd.exe se conecta, e você desativou o suporte à sequência ANSI de alguma forma. O script chama as APIs do console Win32 diretamente e desabilita o suporte à sequência ANSI (improvável) ou o recurso foi desativado por algum outro métodoAcredito que seja porque você está no Windows 10 e a tag do windows-11 na pergunta está errada. A captura de tela parece completamente igual ao Windows 10. Além disso, no Windows 11 você não precisa fazer nada para habilitar o suporte à sequência ANSI no conhost.exe, enquanto no Windows 10 você pode precisar criar uma chave de registro para habilitá-lo
Portanto, a primeira solução é criar um novo DWORD nomeado
VirtualTerminalLevel
no registro no caminhoHKEY_CURRENT_USER\Console
com o valor 1. Depois disso, o conhost.exe exibirá a cor corretamenteA melhor solução é usar o Windows Terminal, que é o terminal mais recente do Windows e tem mais recursos além do suporte à sequência ANSI, como emojis, suporte total a Unicode ...
Veja também