2010-10-07 5 views
2

J'utilise Netbeans pour coder Django. Quand j'insérer:ipython montrant le charabia lors du débogage de Django avec Netbeans

import ipdb; ipdb.set_trace() 

exécution du flux s'arrête mais il montre du charabia, tels que:

[1;32m/path/to/file/models.py[0m(344)[0;36macceptBid[1;34m()[0m 
[1;32m 343 [1;33m  [1;32mimport[0m [1;37mipdb[0m[1;33m;[0m [1;37mipdb[0m[1;33m.[0m[1;37mset_trace[0m[1;33m([0m[1;33m)[0m[1;33m[0m[0m 
[0m[1;32m--> 344 [1;33m  [1;32mreturn[0m [1;37mself[0m[1;33m.[0m[1;37msenderId[0m[1;33m([0m[1;33m)[0m [1;33m==[0m [1;37muser_obj[0m[1;33m.[0m[1;37mid[0m[1;33m[0m[0m 
[0m[1;32m 345 [1;33m[1;33m[0m[0m 
[0m 

Je peux utiliser ensuite sauter et tout de pdb. Mais je ne vois pas où je suis dans le code, ce qui me force à utiliser pdb au lieu de ipdb.

+0

voir aussi cette question connexe: http://stackoverflow.com/questions/19189124/ipdb-show-color-code-instead-of-color – User

+0

cette question a été fixée avec un peu de chance dans [ipdb 0.8.1] (https://pypi.python.org/pypi/ipdb/0.8.1). –

Répondre

1

Ce sont ANSI escape codes, qui sont utilisés pour les couleurs de texte dans la sortie de l'ipdb. Pour une raison quelconque, le terminal que vous déboguez n'accepte pas les codes et les imprime sous forme de texte. Vous pourrez peut-être trouver un paramètre dans NetBeans pour modifier ce que le terminal déclare lui-même ou ce qu'il accepte réellement.

+0

Merci encore Daniel. Il semble que le terminal Netbeans n'ait pas encore de support ANSI bien qu'il soit dans la liste TODO. – maraujop

+1

Pour la prise en charge des couleurs ANSI dans cmd.exe, voir [cette solution] (http://adoxa.110mb.com/ansicon/) de Jason Hood. –

0

Ce que j'ai fait pour pouvoir utiliser ipdb avec Django Netbeans, c'est de désactiver la sortie de couleur dans ipdb. Il y a plusieurs moyens de le faire. Si vous avez installé ipdb par easy_install vous pouvez modifier le code en __init__.py laissant comme:

import sys 
from IPython.Debugger import Pdb 
from IPython.Shell import IPShell 
from IPython import ipapi 

shell = IPShell(argv=['']) 

def set_trace(): 
    Pdb("NoColor").set_trace(sys._getframe().f_back) 

vous pouvez également vous créer un crochet pour importer ipdb sans couleurs. J'espère que cela aide :)

2

pour moi a bien fonctionné avec juste commenter la ligne et ajouter une phrase de passe dans ipdb/__main__.py

from IPython.utils import io 

    def update_stdout(): 
     # setup stdout to ensure output is available with nose 

     #THIS IS THE LINE TO COMMENT ######################### 
     #io.stdout = sys.stdout = sys.__stdout__ 

     #REMEMBER TO ADD pass 
     pass          
else: 
    from IPython.Debugger import Pdb, BdbQuit_excepthook 
    from IPython.Shell import IPShell 
    from IPython import ipapi