Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialSiddhartha Kala
4,170 Pointssys.exit() not working as expected
I am trying to use sys.exit() but it is not exiting python as I was expecting it would. It raises SystemExit exception and then asks for a bunch of options to quit/exit. I am using IPython 6.1.0 on Windows 10. Here is what I am getting:
In [525]: sys.exit() An exception has occurred, use %tb to see the full traceback.
SystemExit
c:\users\siddharthakala\appdata\local\programs\python\python36-32\lib\site-packages\IPython\core\interactiveshell.py:2870: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
3 Answers
Michael Hulet
47,913 PointsYou should definitely also try Steven's answer, but what happens if you pass 0
to sys.exit()
? That should signify a normal exit, so it may not treat it as an exception. I haven't used IPython, so I'm not really sure. I've personally only ever used CPython, the official and most popular implementation, which can be downloaded here
Steven Parker
231,236 PointsIt sounds like there's some differences between "IPython" and regular Python. But what if you just take the suggestion from the message and use exit()
or quit()
instead of sys.exit()
?
Siddhartha Kala
4,170 PointsThanks for the suggestion. exit() and quit() work just fine in IPython, also, sys.exit() work fine in normal Python. I was just trying to understand why sys.exit() wont work in IPython. Couldn't find a proper explanation on internet as well. I guess there are some differences in system level command execution in IPython, for example, commands like 'cls' and dir work fine in IPython directly but wont work in normal python, just type cls in Ipython and it will work.
Thanks anyways :)
Siddhartha Kala
4,170 PointsTried sys.exit(0) as well as sys.exit(1), but same result (almost). Anyways, I dont much like IPython either.
Here's what I got with sys.exit(0)
In [11]: sys.exit(0) An exception has occurred, use %tb to see the full traceback.
SystemExit: 0
c:\users\siddharthakala\appdata\local\programs\python\python36-32\lib\site-packages\IPython\core\interactiveshell.py:2870: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
Michael Hulet
47,913 PointsThis definitely seems like an implementation detail of IPython, then. It looks like IPython just doesn't like you using sys.exit
instead of exit
or quit
. CPython doesn't care, and it's also the most common and widely supported Python implementation, as well as the version that Treehouse teaches. I'd recommend sticking with that, but it's awesome you were trying stuff on your own!
Siddhartha Kala
4,170 PointsSiddhartha Kala
4,170 PointsUsing CPython is a better option I guess, rather than getting unpredictable output in IPython, or avoiding use of basic commands such as sys.exit() :)