Exit the interpreter by raising SystemExit(status). If the status is omitted or None, it defaults to zero (i.e., success). If the status is numeric, it will be used as the system exit status. If it is another kind of object, it will be printed and the system exit status will be one (i.e., failure).
Just think of Python as a programmers version of the "Magic 8 balls".
I know what SystemExit is. In 2.5 as well SystemExit is raised when sys.exit() is called. For example: try: import sys sys.exit(0) except SystemExit: print "system exit raised" raise
But I don't understand why the interpreter does not exit in 2.6 but does exit in 2.5. Well, I do not need to understand that but I need to know how to get the interpreter to exit in 2.6.
How does that answer the OP's question? Namely, how to make 2.6 behave like 2.5? (Even saying "You can't make 2.6 behave like 2.5" would have been a better answer.)
Failing that, how about something that explains why 2.6 behaves differently than 2.5, and why one of them is better or more correct than the other?
Personally, I think 2.6's is probably the more correct behavior. Specifically, if the point of the -i command line option is to force interactive mode after completion of the script (which in this case completed with sys.exit), then it should go to interactive mode regardless of whether the script terminates "normally" or not. I think 2.5's behavior of allowing interactive mode to be skipped is against the spirit of -i. Unless -i meant something different in 2.5.
Is there some kind of environment variable to set up to control this?
On Nov 12, 11:32 pm, hetchkay <hetch...@gmail.com> wrote:
> But I don't understand why the interpreter does not exit in 2.6 but > does exit in 2.5. Well, I do not need to understand that but I need to > know how to get the interpreter to exit in 2.6.
Well, taken at face value, I would say the answer is to not use the -i option. ;) But I assume you would like to be able to sometimes enter interactive mode after the script completes but sometimes not?
That I don't know how to do, but I would think it is either very simple or impossible. Surely someone more knowledgeable will be able to say which it is.
Also, if you present your reason for wanting such behavior, maybe people can suggest alternatives that will serve your needs, even if not exactly replicating what you had in 2.5.
> How does that answer the OP's question? Namely, how to make 2.6 > behave like 2.5? (Even saying "You can't make 2.6 behave like 2.5" > would have been a better answer.)
> Failing that, how about something that explains why 2.6 behaves > differently than 2.5, and why one of them is better or more correct > than the other?
> Personally, I think 2.6's is probably the more correct behavior. > Specifically, if the point of the -i command line option is to force > interactive mode after completion of the script (which in this case > completed with sys.exit), then it should go to interactive mode > regardless of whether the script terminates "normally" or not. I > think 2.5's behavior of allowing interactive mode to be skipped is > against the spirit of -i. Unless -i meant something different in 2.5.
> Is there some kind of environment variable to set up to control this?
> John
I can understand the behavior from a '-i' point of view. My requirement is somewhat different. Consider a geometry tool that can be used to create objects, merge objects etc. I have python 'commands' for doing any of these operations and for saving the objects to a file. The user could write a file containing a set of commands (in python format) and load this file in the GUI. Optionally, one of the commands could be to exit in which case the GUI should shut down. I am using 'execfile' to execute the file, and this does not exit if the user has used sys.exit (or even if I expose a command called 'Exit' which calls sys.exit).
May be I should not be using execfile but I am not sure what else I should use. The user-written file could contain loops and other constructs as well.
> > How does that answer the OP's question? Namely, how to make 2.6 > > behave like 2.5? (Even saying "You can't make 2.6 behave like 2.5" > > would have been a better answer.)
> > Failing that, how about something that explains why 2.6 behaves > > differently than 2.5, and why one of them is better or more correct > > than the other?
> > Personally, I think 2.6's is probably the more correct behavior. > > Specifically, if the point of the -i command line option is to force > > interactive mode after completion of the script (which in this case > > completed with sys.exit), then it should go to interactive mode > > regardless of whether the script terminates "normally" or not. I > > think 2.5's behavior of allowing interactive mode to be skipped is > > against the spirit of -i. Unless -i meant something different in 2.5.
> > Is there some kind of environment variable to set up to control this?
> > John
> I can understand the behavior from a '-i' point of view. My > requirement is somewhat different. Consider a geometry tool that can > be used to create objects, merge objects etc. I have python 'commands' > for doing any of these operations and for saving the objects to a > file. The user could write a file containing a set of commands (in > python format) and load this file in the GUI. Optionally, one of the > commands could be to exit in which case the GUI should shut down. I am > using 'execfile' to execute the file, and this does not exit if the > user has used sys.exit (or even if I expose a command called 'Exit' > which calls sys.exit).
> May be I should not be using execfile but I am not sure what else I > should use. The user-written file could contain loops and other > constructs as well.
> -Krishnan
Hi,
I had been starting my application with -i option. I have removed this now and made a few other changes and things work OK now.