web-dev-qa-db-fra.com

Enregistrement des couleurs de sortie PyCharm

J'utilise PyCharm pour développer une application GAE sous Mac OS X. Est-il possible d'afficher des couleurs dans la console d'exécution de PyCharm?

J'ai défini un handler pour afficher les couleurs au format ansi. Ensuite, j'ai ajouté le gestionnaire:

LOG = logging.getLogger()
LOG.setLevel(logging.DEBUG)
for handler in LOG.handlers:
    LOG.removeHandler(handler)

LOG.addHandler(ColorHandler())

LOG.info('hello!')
LOG.warning('hello!')
LOG.debug('hello!')
LOG.error('hello!')

Mais la couleur est la même.

PyCharm run console output

MODIFIER:

Une réponse de JetBrains issue tracker : Modifiez la ligne 55 de l'extrait de code de sys.stderr en sys.stdout stderr stream est toujours coloré en rouge alors que stdout pas.

Maintenant, les couleurs sont correctement affichées.

30
dablak

PyCharm ne supporte pas cette fonctionnalité de manière native, cependant vous pouvez télécharger le plugin Grep Console et définir les couleurs à votre guise.

Voici une capture d'écran: http://plugins.jetbrains.com/files/7125/screenshot_14104.png (lien est mort)

J'espère que ça aide un peu :) bien qu'il ne fournisse pas de console entièrement colorisée, mais c'est un pas en avant.

23
metabuddy

À partir de PyCharm 2017.2 au moins, vous pouvez le faire en activant:

Run | Modifier les configurations ... | Configuration | Emuler le terminal dans la console de sortie 

 Run configuration

 enter image description here

20
phoenix

En retard pour le parti, mais pour quiconque ayant ce problème, voici la solution qui a fonctionné pour moi:

import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

Cela venait de cette réponse

3
Outfast Source

J'ai découvert la solution suivante. Apparemment, Pycharm redirige sys.stdout. Depuis la documentation du module sys :

sys.__stdin__
sys.__stdout__
sys.__stderr__

Ces objets contiennent les valeurs d'origine de stdin, stderr et stdout Au début du programme. Ils sont utilisés lors de la finalisation et Peut être utile pour imprimer dans le flux standard actuel, peu importe si L'objet sys.std * a été redirigé.

Il peut également être utilisé pour restaurer les fichiers dans des objets de fichier de travail connus Au cas où ils auraient été écrasés par un objet endommagé. .____.] flux précédent avant de le remplacer et restaurer l'objet enregistré.

Par conséquent, pour résoudre ce problème, vous pouvez rediriger la sortie vers sys.__stdout__. Exemple de configuration de mon log_config.yml:

console:
  class: logging.StreamHandler
  level: DEBUG
  stream: "ext://sys.__stdout__"
  formatter: colorFormatter
0
nmz_razor

Ce qui a résolu le problème pour moi (sur PyCharm 2017.2) était d'aller à Preferences -> Editor -> Color Scheme -> Console Colors et de changer la couleur de Console -> Error output. Bien sûr, cela change aussi la couleur de l'erreur mais au moins, vous ne voyez pas le rouge tout le temps ...

0
Sir Codesalot