[IPython-user] Closing an embedded IPython Shell.

Dennis Muhlestein djmuhlestein@gmail....
Wed Jul 29 12:16:08 CDT 2009


I have a GUI open in  a dedicated thread.  IPython is running in the  
shell.  When I close the GUI, I want IPython to close.  I call  
ipshell.magic_Exit() from the GUI thread when the GUI thread exits.   
This terminates the shell but the shell doesn't go back to the  
terminal prompt until I hit Enter.  (It's not waiting for the confirm  
exit, it's stuck on waiting for stdin.)

-Dennis

On Jul 29, 2009, at 11:01 AM, Brian Granger wrote:

> Dennis,
>
> Hmm, I am puzzled.  If I save the code below to a file  
> (embedexit.py) and then do:
>
> python embedexit.py
>
> I get an IPython prompt and can use it interactively.  I can then  
> close it by doing:
>
> In [3]: Exit
>
> or
>
> In [3]: exit()
>
> And the shell closes immediately.  I want to understand what you are  
> doing different.  Could you clarify?
>
> Cheers,
>
> Brian
>
> On Tue, Jul 28, 2009 at 2:53 PM, Dennis Muhlestein <djmuhlestein@gmail.com 
> > wrote:
>
> On Jul 27, 2009, at 10:42 AM, Brian Granger wrote:
>
> I think you have 2 options:
>
> 1.  Modify confirm_exit in ipythonrc to be 0 (default is 1).
>
> 2.  Create your embedded ipython like this to override the setting  
> without changing your config file
>
> from IPython.Shell import IPShellEmbed
> from IPython.ipstruct import Struct
> myconfig = Struct()
> myconfig.confirm_exit=0
> ipshell=IPShellEmbed(rc_override=myconfig)
> ipshell()
>
>
> Its a no-go.  The shell doesn't pop up the confirm exit anyway  
> because the magic_Exit() function I'm using doesn't call that.  The  
> issue is that the shell is hung waiting for some input from stdin.   
> It doesn't drop back to a terminal unless I hit enter.
>
> -Dennis
>



More information about the IPython-user mailing list