Estou usando um tema escuro. Como você pode ver, os erros (ModuleNotFound do Python) são quase ilegíveis. Tenho duas perguntas.
- Essa cor é controlada pelo python ou pelo terminal?
- Como posso alterar a cor? Existe alguma configuração LS_COLOR?
Estou usando um tema escuro. Como você pode ver, os erros (ModuleNotFound do Python) são quase ilegíveis. Tenho duas perguntas.
Ambos: O Python escolhe uma cor de paleta geral da paleta "padrão" de 8/16 cores, e a configuração do terminal controla o tom específico.
Por exemplo, o Python exibe
\033[35m
como saída a cor de primeiro plano #5, que geralmente significa "algum tipo de magenta", mas terminais diferentes têm padrões diferentes para "magenta" – e geralmente vários esquemas predefinidos para escolher.As 8 cores "superiores" geralmente são versões brilhantes das "inferiores" (…exceto no tema Solarized). Existem códigos específicos para usá-las (por exemplo,
95
para magenta brilhante), mas muitos terminais também tratam implicitamente o texto em negrito como brilhante, já que originalmente essa era a única maneira dos terminais de CRT de hardware lidarem com uma cor "forte" em suas fontes fixas. Portanto, quando o Python usa\033[1;35m
"magenta negrito", esta pode ser a cor nº 5 ou a cor nº 13.Os programas também podem usar uma paleta de 256 cores (6×6×6), que é mais fixa, com pouca variação entre os terminais, mas raramente é usada por padrão , pois é difícil determinar se um terminal a suporta (e se suporta a sintaxe padrão ou apenas a sintaxe de fato "mal compreendida"). O mesmo vale para RGB de cores diretas, que a maioria dos terminais suporta, mas poucos programas usam.
A escolha da cor não é definida separadamente para stdout e stderr. Quando chega ao terminal, não há mais distinção entre stdout e stderr: ambos chegam misturados pelo mesmo pipe (dispositivo tty), de modo que o terminal não pode aplicar cores diferentes por conta própria.
Os códigos de cores gerados pelo programa podem ser personalizáveis ou não. Por exemplo,
dmesg
veja em terminal-colors.d(5).Muitos programas – incluindo Python – respeitam a
NO_COLOR=1
variável para desativar todas as cores de saída. (Um pouco exagerado para uso normal, mas infelizmente ainda não existeSENSIBLE_AMOUNT_OF_COLOR
.)O Python oferece suporte à desativação de cores usando a
PYTHON_COLORS
variável de ambiente, mas não à personalização delas. EleLib/traceback.py
é codificado para usar "magenta negrito", que pode ser a cor #5 ou #13, dependendo do terminal.Mas, como ele usa apenas os códigos de cores base 8/16, a tonalidade específica dessas cores pode ser definida na configuração do seu terminal (e praticamente todos os terminais têm essa opção personalizável, veja, por exemplo, o link anterior ). Se o padrão "magenta" estiver muito escuro, você pode alterá-lo.
Tecnicamente, você pode substituir a ideia do Python sobre qual código de cor usar para "magenta negrito" no seu script $PYTHONSTARTUP, mas isso pode ter resultados confusos, pois não há garantia de que esteja limitado apenas ao traceback.