[IPython-user] EOF for the cmd class

Justin Walker justin at mac.com
Thu Nov 25 13:34:49 CST 2004


Thanks for taking a look at this.  More below.

On Nov 24, 2004, at 23:13, Fernando Perez wrote:

> Justin Walker wrote:
>
>> If I run this code and type ^D in python, the interpreter exits to 
>> shell.  If I do the same with ipython, it complains, with a 
>> traceback, and the comment that that I should use ^D to exit (:-}).
>
> Ipython is behaving as intended in this case: when you type 'run 
> rolo', ipython will execute your python script, but it will trap all 
> SystemExit calls to avoid user code blowing up ipython itself.

I begin to see what's going on.  This is an "exit python" hook, not an 
exit the command-loop hook.

[snip]
> Having clarified that, let me make a suggestion: don't use sys.exit() 
> to abort execution as a normal mechanism

I've now figured that out.  FWIW, my (1st edition) Learning Python book 
gives this (sys.exit) as the way to exit from the command loop, and I 
was just faithfully following, sheep-like.

> If you simply let your 'main' function return cleanly at the end of 
> the script, python will close the execution loop, and ipython won't 
> give you the nasty warnings which are now bothering you. You should 
> consider sys.exit() as an emergency bailout, not as the normal 
> termination mechanism.

Haven't figured out how to exit the command loop yet.  It appears that 
'return' from any of the 'do_' hooks will just go back into the command 
loop, and I have yet to find documentation that describes how to deal 
with this.  Time to UTSL: OK, return 'True'.  I guess I missed that in 
the doc :-}

> I hope this helps.

Yes it does; thanks!

Cheers,

Justin

--
/~\ The ASCII           Justin C. Walker, Curmudgeon-at-Large
\ / Ribbon Campaign
  X  Help cure HTML Email
/ \




More information about the IPython-user mailing list