74 votes

Comment puis-je intégrer (créer) un shell python interactif dans mon programme python

Est-il possible de démarrer un shell python interactif dans un programme python?

Par exemple, je souhaite utiliser ce shell python interactif pour inspecter certaines variables internes du programme.

73voto

phihag Points 89765

Le module de code fournit une console interactive:

 import readline # optional, will allow Up/Down/History in the console
import code
vars = globals().copy()
vars.update(locals())
shell = code.InteractiveConsole(vars)
shell.interact()
 

20voto

lubosz Points 136

Dans ipython 0.13+, vous devez procéder comme suit:

 from IPython import embed

embed()
 

6voto

NPE Points 169956

6voto

Mike Lewis Points 29305

J'ai ce code depuis longtemps, j'espère que vous pourrez le mettre à profit.

Pour inspecter / utiliser des variables, il suffit de les mettre dans l'espace de noms actuel. Par exemple, je peux accéder à var1 et var2 partir de la ligne de commande.

 var1 = 5
var2 = "Mike"
# Credit to effbot.org/librarybook/code.htm for loading variables into current namespace
def keyboard(banner=None):
    import code, sys

    # use exception trick to pick up the current frame
    try:
        raise None
    except:
        frame = sys.exc_info()[2].tb_frame.f_back

    # evaluate commands in current namespace
    namespace = frame.f_globals.copy()
    namespace.update(frame.f_locals)

    code.interact(banner=banner, local=namespace)


if __name__ == '__main__':
  keyboard()
 

Cependant, si vous voulez strictement déboguer votre application, je vous suggère fortement d' utiliser un IDE ou un pdb (débogueur python) .

5voto

Fábio Diniz Points 4110

Avec IPython, il vous suffit d’appeler:

 from IPython.Shell import IPShellEmbed; IPShellEmbed()()
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X